¿Hay una API de Java para archivos mp4?

Los archivos Mp3 pueden manejarse usando este soporte mp3 SPI , pero no encuentro algo similar a los archivos mp4.

Cualquier ayuda sería apreciada.

–ACTUALIZAR

Lo que quiero hacer es obtener el tamaño del archivo, como hago con los archivos wave usando este código:

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file); AudioFormat format = audioInputStream.getFormat(); long audioFileLength = file.length(); int frameSize = format.getFrameSize(); float frameRate = format.getFrameRate(); float durationInSeconds = (audioFileLength / (frameSize * frameRate)); 

–RESPONDER

Aquí está el código de respuesta que usa la pista de @mdma (IBM toolkit):

 /** * Use IBMPlayerForMpeg4SDK to get mp4 file duration. * * @return the mp4File duration in milliseconds. */ public static long getMp4Duration(File mp4File) throws IllegalStateException, IOException { PlayerControl playerControl = PlayerFactory.createLightweightMPEG4Player(); playerControl.open(mp4File.getAbsolutePath()); long mili = playerControl.getDuration(); // int sec = (int) ((mili / 1000) % 60); // int min = (int) ((mili / 1000) / 60); // System.out.println("IBM Tookit result = " + min + ":" + sec); return mili; } 

Pregunta relacionada, independiente del lenguaje: ¿ Alguien familiarizado con la estructura de datos mp4?

Mp4 es un formato contenedor: para poder encontrar la duración del audio interno, primero debe analizar el contenido del contenedor. Puede extraer el contenido de un archivo mp4 utilizando isobox mp4parser .

Una vez que haya hecho eso, tendrá los datos de audio sin formato. Si es uno de los formatos admitidos en java (wav, mp3, etc.), entonces puede simplemente abrir este archivo como ya lo hizo para wavs. Inicialmente, probablemente extraerá el audio en un archivo separado, por simplicidad y una depuración más sencilla. Cuando esto esté funcionando, puede hacer la extracción en línea: implementa un InputStreamFilter que extrae el contenido de audio del mp4 sobre la marcha, por lo que no se requieren archivos externos adicionales.

IBM Alphaworks tiene una biblioteca de decodificadores MP4 de java pura disponible, pero posiblemente sea demasiado para sus necesidades actuales.

Xuggler ( http://www.xuggle.com/xuggler/ ) proporciona la mejor envoltura de Java para FFMPEG que he visto: te permitirá decodificar las imágenes de casi cualquier archivo y luego hacer lo que quieras con ellos.

No especifica lo que quiere hacer. Si solo quiere reproducir los archivos, puede usar MPlayer y controlarlo de forma remota a través de la API de ProcessBuilder y stdio.