2010-01-11 22 views
24

Necesito una reproducción de video simple en Java.Reproducción de video en Java (JMF, Fobs4JMF, Xuggler, FMJ)

Éstos son mis requisitos:

  • producción de calidad

  • los archivos abiertos y decodificación de vídeo cuya códecs de vídeo y audio puede ser elegido por mí. I.E Puedo elegir codecs que se comporten bien.

  • Ser capaz de juego, pausa, seekToFrame O seekToTime y parada reproducción. Básicamente, deseo poder reproducir segmentos de un solo archivo de video de forma no lineal. Por ejemplo, es posible que desee reproducir el segmento 20.3seg a 25.6seg, pause durante 10 segundos y luego reproducir el segmento 340.3seg a 350.5seg, etc.

  • Durante la reproducción, el video y el audio deben estar sincronizados.

  • El video debe mostrarse en un JComponent Swing.

  • Debe ser capaz de utilizar 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:

He implementado un prototipo rápido y esto parece hacer lo que necesito. Puedo reproducir un segmento de vídeo mediante:

player.setStopTime(new Time(end)); 
player.setMediaTime(new Time(start)); 
player.start(); 

Mientras Fobs4JMF parece funcionar, siento la calidad del código es pobre y el proyecto ya no está activo. ¿Alguien sabe de algún producto que use Fobs4JMF?


  • escribir una aplicación flash que desempeña un video uso JFlashPlayer para ponerla en mi aplicación Java Swing

diferencia de Java, Flash es brillante en la reproducción de vídeo. Podría escribir una pequeña aplicación Flash con los métodos:

open(String videoFile), 
play(), 
pause(), 
seek(int duration), 
stop() 

Luego ponerla en Java utilizando JFlashPlayer que se puede llamar a las 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 sencillo reproductor multimedia en la parte superior de Xuggler

Xuggler es una envoltura 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.


  • Uso FMJ

he tratado de conseguir FMJ para trabajar, pero no han tenido éxito hasta el momento.


Agradeceria su opinion sobre mi problema.

Respuesta

11

¿Puede un hermano gritar por Xuggler?

+0

Necesito mucha ayuda en xuggle, ¿cómo puedo agregar dos videos para crear un video en xuggle? Estoy intentando google pero no está ayudando mucho ... –

+2

¿Dónde demonios está el enlace de descarga real para Xuggler ?! – aaronsnoswell

+0

Xuggler no puede buscar el fotograma clave para mp3 o m4a. Ese es el problema que falta en el encabezado ffmpeg. – taymedee

2

JavaFX tiene una serie de códecs de video y audio en funcionamiento incorporados. Es probable que sea la solución con el soporte más amplio en este momento.

+0

Hola jsight y gracias por tu respuesta. Sé que JavaFX admite video, pero desafortunadamente tuve que descartarlo ya que es difícil importar componentes JavaFX en una aplicación Java Swing. Hay formas, pero son pirateos sin soporte. – ksullivan

+0

Vea también: http: //dsc.sun.com/learning/javaoneonline/2008/pdf/TS-6509.pdf y http://www.google.com/url?sa=t&source=web&ct=res&cd=3&ved=0CBEQFjAC&url=http%3A%2F%2Flobobrowser.wordpress. com% 2F2008% 2F12% 2F29% 2Fjavafx-video-in-a-swing-application-technical-doable% 2F & ei = -DhLS97jCsKztgf87cDkDQ & usg = AFQjCNHU942l5cD-Wwe-fn7gSiW8BwFP7Q & sig2 = 0RkjWw98VIKfs1egM4gN7g – jsight

+0

Gracias por esos enlaces. Parece que, además del soporte no oficial para JavaFX en Java, habría problemas de distribución (particularmente en relación con los códecs de video) – ksullivan

2

He estado usando jffmpeg de la misma manera que usa 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 manera 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.

+0

aprecio que ahora tiene más de un año, pero si aún está interesado, ¡vea mi respuesta! – berry120

+0

gracias, sí, sigue siendo un problema abierto para mí y lo investigaré. – paul

2

no han 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.

+2

No lo hace, puede distribuir libvlc con su aplicación, que es lo que hago. – berry120

+0

No intente obtener soporte para vlcj sin embargo, el tipo es un idiota. –

4

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 hacer que funcione de manera confiable con varios reproductores he tenido que recurrir a reproductores que no están en 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 multimedia 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 toman este enfoque).

Cuestiones relacionadas