Obtenir la durée d’une vidéo en Java

Voilà un truc hyper galère à faire en Java.
J’ai exploré plusieurs solutions, mais en voilà une assez simple.

Elle s’appuie sur la librairie Jave.

/**
 * @return the videoLength
 */
public String getVideoLength( java.io.File videoFile, it.sauronsoftware.jave.Encoder encoder ) {

	String result = "-1";
	MultimediaInfo info = null;
	try {
		info = encoder.getInfo( videoFile );

	} catch( InputFormatException e ) {
		// TODO: log
		e.printStackTrace();

	} catch( EncoderException e ) {
		// TODO: log
		e.printStackTrace();
	}

	if( info != null ) {
		long r = info.getDuration();
		result = String.format( "%d' %02d''",
				TimeUnit.MILLISECONDS.toMinutes( r ),
				TimeUnit.MILLISECONDS.toSeconds( r ) -
				TimeUnit.MINUTES.toSeconds( TimeUnit.MILLISECONDS.toMinutes( r ))
		);
	}

	return result;
}

Sous Windows 7, j’ai pu vérifier que cela fonctionnait avec du MPEG II, du MP4, FLV, MKV (avec codec X264) et AVI (codec DivX).

Il me reste encore à voir si ça passe avec du TS (codec X264).
J’ai déjà pu noter que ce dernier conteneur posait problème à VLC pour afficher la durée de la vidéo.

Publicités

2 réflexions sur “Obtenir la durée d’une vidéo en Java

  1. Merci pour ce script cela fais un mois que je cherchais en vain.

    Par contre j’ai une question, ta variable « videoFile » est de quel type, File ?
    Et ma seconde est l’objet « encoder ». Ou ce trouve cette class et/ou dans quel librairie ? Car j’ai cherché dans les librairies de jave ou de java mais je ne l’ai pas trouvé.

    Merci d’avance pour ta réponse 😉

    1. Bonjour,

      Effectivement, j’ai fait un copier-coller à l’arrache. J’ai rectifié le code pour rajouter les informations demandées.
      videoFile est un objet java.io.File. Et encoder est bien un objet de la librairie Jave.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

w

Connexion à %s