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

About this entry