videos reproductor reproducir programacion para framework con java video audio streaming player

reproducir - reproductor de video en javafx



Bibliotecas de reproductor multimedia en Java (3)

¿Has mirado a gstreamer ?

Estoy evaluando bibliotecas para reproducir audio / video en Java. No necesita ser 100% Java ; Los enlaces de Java a bibliotecas nativas están perfectamente bien. Una aplicación externa que se puede controlar desde Java también está bien, siempre que pueda representar video en un componente de Java.

La plataforma objetivo es Linux. El soporte de Windows es una ventaja, pero no es obligatorio.

He jugado con VLC utilizando las vinculaciones de VLCj , y funciona bastante bien en general, pero sigue chocando ocasionalmente cuando se lo somete a estrés. También he usado mplayer en modo esclavo , que se ve bien. Pero me gustaría evaluar otras opciones también.

Estos son los requisitos:

  • Reproducción en vivo de H.264, MPEG4 a través de RTP usando RTSP. Puntos extra para MJPEG sobre HTTP.
  • Capaz de renderizar video en un componente Java (Swing o AWT)
  • Código abierto, y mantenido activamente
  • Estable, sólido como una roca

Sugerencias? ¿Consejo?


Ok, he pasado el último mes jugando con varias opciones y estos son los resultados:

  1. VLC . Este fue mi primer pensamiento, ya que todos siguen diciendo que "juega todo". He utilizado tanto los enlaces VLCj Java, como la interfaz remota incorporada ( -I rc ). En general, encontré que funcionaba bastante bien, pero tenía algunos problemas. Seguí viendo choques ocasionales bajo una carga pesada (no es culpa de VLCj, ya que también ocurre cuando se usa el binario directamente). También encontré que el consumo de memoria es relativamente alto en comparación con otras opciones.

  2. MPlayer . Esto en realidad funciona mejor que VLC en mi experiencia, no se bloquea y el consumo de memoria es menor. Sin enlaces Java, aunque el modo esclavo funciona muy bien.

  3. GStreamer . Muy potente, muy flexible, pero aún así es fácil comenzar. Intenté los enlaces Java y ejecutando el binario gst-launch desde Java. Ambos enfoques funcionan notablemente bien.

  4. Xuggler se veía bien, sin embargo, parece tener problemas con RTP (como se indica en las preguntas frecuentes ). Como tanto GStreamer como MPlayer funcionaron muy bien, no supere la investigación inicial.

Considero que GStreamer es la mejor solución dados los requisitos, con MPlayer como la segunda opción.


También he pasado un tiempo investigando mis opciones, y de hecho he llegado a la conclusión de que VLCJ es la mejor opción. Sin embargo, aquí está el factor decisivo, es necesario que se ejecute fuera del proceso (especialmente con múltiples jugadores) para que brinde usted 100% operación confiable. Ese es el enfoque que estoy tomando y aún no lo he visto colapsar. Con esto sólido como una roca, también tiene otras ventajas:

  • Puede jugar casi cualquier cosa. Sí, es un poco cliché, pero esto incluye DVD, videos de Youtube, casi cualquier archivo de video ...
  • Debería ser compatible con Linux / Mac / Windows, aunque todavía tengo que verificar el funcionamiento de Mac.
  • Mantenido de forma activa, y si hace una pregunta buena (como bien pensada) sobre el grupo de discusión, ¡el propietario a menudo responde en minutos en mi experiencia!
  • El código abierto y la actividad de grupo de Google en el momento de escribir es alta.
  • Utiliza toda la aceleración de gráficos que VLC hace
  • Capaz de jugar con cualquier componente Canvas de peso pesado (y si usas el reproductor directo, obtienes BufferedImage para que se muestre en cualquier lugar que desees, ¡incluso en JOGL 3D Land si estás loco!

No me ha resultado tan pesado en el frente de los recursos tampoco, aunque no he hecho pruebas exhaustivas (¡pero 3 jugadores trabajan bien en conjunto, así como mi aplicación relativamente hambrienta de energía en mi portátil básica de 4 años!)

Desventajas? No existe un marco oficial para los jugadores fuera de proceso, por lo que debes construir uno tú mismo (mira aquí cómo lo hice). Y a veces tienes que hacer algunos ajustes para que funcione. Pero, por lo que puedo ver, ¡hasta ahora me funciona bien!