Reproducción de video en Java(JMF, Fobs4JMF, Xuggler, FMJ)
playback (5)
¿Puede un hermano obtener un grito para Xuggler ?
Necesito una reproducción de video simple en Java.
Aquí están mis requisitos:
CALIDAD DE LA PRODUCCIÓN
Abra y decodifique archivos de video cuyos códecs de audio y video pueden ser elegidos por mí. IE Puedo elegir codecs que se comporten bien.
Puede reproducir , pausar , seekToFrame O seekToTime y detener la reproducción. Básicamente, deseo poder reproducir segmentos de un solo archivo de video de forma no lineal. Por ejemplo, puedo querer jugar el segmento de 20.3 segundos a 25.6 segundos, hacer una pausa de 10 segundos y luego reproducir el segmento de 340.3 segundos a 350.5 segundos, etc.
Durante la reproducción, el video y el audio deben estar sincronizados.
El video debe mostrarse en un Swing JComponent.
Debe ser capaz de usar en un producto comercial sin tener que ser de código abierto (IE LGPL o Comercial es bueno)
Mi investigación me ha llevado a las siguientes soluciones:
- Utilice Java Media Framework + Fobs4JMF http://fobs.sourceforge.net/f4jmf_first.html
Implementé un prototipo rápido y esto parece hacer lo que necesito. Puedo reproducir un segmento de video usando:
player.setStopTime(new Time(end));
player.setMediaTime(new Time(start));
player.start();
Mientras que Fobs4JMF parece funcionar, creo que la calidad del código es mala y el proyecto ya no está activo. ¿Alguien sabe de algún producto que use Fobs4JMF?
- Escriba una aplicación Flash que reproduzca un video y use JFlashPlayer para llevarlo a mi aplicación Java Swing
A diferencia de Java, Flash es brillante al reproducir video. Podría escribir una pequeña aplicación Flash con los métodos:
open(String videoFile),
play(),
pause(),
seek(int duration),
stop()
Luego, tráigalo a Java usando JFlashPlayer, que puede invocar funciones de Flash desde Java.
Lo que me gusta de esta solución es que la reproducción de video en Flash debe ser sólida como una roca. ¿Alguien ha usado JFlashPlayer para reproducir videos en Java?
- Escribe un reproductor multimedia simple encima de Xuggler
Xuggler es un contenedor FFMpeg para Java que parece ser un proyecto bastante activo y de alta calidad. Sin embargo, implementar la reproducción de video simple descrita en los requisitos no es trivial (buscando en particular) pero parte del trabajo se ha realizado en MediaTools MediaViewer, que sería la base sobre la cual construir.
- Use FMJ
Intenté que FMJ funcione, pero hasta ahora no he tenido éxito.
Agradecería sus opiniones sobre mi problema.
En mi opinión, VLCJ es el camino a seguir para este tipo de cosas. Me encanta Xuggler para el trabajo de codificación / transcodificación, pero lamentablemente es tan complicado hacer una reproducción simple y resolver todos los problemas de sincronización y cosas por el estilo, y tiene muchas ganas de reinventar la rueda.
Lo único con VLCJ es que para que funcione de manera confiable con múltiples jugadores, he tenido que recurrir a jugadores fuera de proceso. El marco no era la cosa más simple del mundo para ponerse en marcha, pero cuando está ahí funciona de maravilla. Actualmente, estoy ejecutando 3 reproductores fuera de proceso en mi aplicación, uno al lado del otro, sin problemas de ningún tipo.
La otra advertencia es que el reproductor de medios incrustado no funcionará con un componente oscilante, solo un lienzo de peso pesado, pero eso no ha sido un problema para mí en absoluto. Si lo hace, puedes usar el reproductor de medios directo para obtener una imagen en búfer y mostrar eso en lo que elijas, pero comerá en tu CPU un poco más (aunque no más que otros jugadores que tengan este enfoque).
He estado usando jffmpeg de la misma manera que usas FOBS, funciona bastante bien, aunque no los he comparado.
También me gustaría ver una forma sencilla de interactuar con los códecs nativos de la misma forma que lo hace JavaFX, pero no parece haber una integración real entre JavaFX y Java.
También ha habido algún trabajo tratando de obtener la biblioteca VLC libvlc en Java. No lo he probado todavía y estaría interesado en recibir noticias de cualquiera que lo haya hecho.
no he probado Xuggler (lo que me interesa) pero estoy pasando un buen rato con VLCJ . El inconveniente que encuentro en él es solo que tienes que tener VLC instalado antes de tu aplicación.
JavaFX tiene una serie de códecs de audio y video en funcionamiento incorporados. Es probable que sea la solución con el soporte más amplio en este momento.