framework descargar advanced java api video media-player

descargar - java jai download jar



Manejo de video(DVD,.avi.mkv) en Java (7)

¿Has intentado utilizar las API de JavaFX?

La forma en que lo veo JavaFX incluye soporte para reproducción H.264 ... y aquí alguien muestra cómo reproducir video en el nuevo WebM / VP8 de código abierto de Google

http://javafxplace.blogspot.com/2010/06/javafx-and-webm-on-linux.html

Después de buscar una biblioteca decente para reproducir videos en Java, me he desconectado. Todo el mundo está gritando que no use JMF porque está desactualizado, es viejo y requiere que el usuario lo instale, otras alternativas como VLCJ parecen buenas si funcionan, pero son todavía relativamente inestables y dependen de grandes cantidades de código nativo, y como para tratar con DVDs, ¡eso parece polvo de oro para encontrar en una biblioteca gratis!

Opciones actuales:

  • Ahora que JavaFX 2 está ganando impulso, ha sido algo que he estado mirando seriamente (de ahí mi pregunta here ) pero hasta ahora no he tenido suerte en tratar de encontrar la manera de hacer que reproduzca algo más que un video FLV estándar.
  • VLCJ está funcionando bien para lo que hace (ver mi respuesta actual) y en este momento es lo que estoy haciendo. Utiliza libvlc para hacer casi cualquier cosa, ya que puede reproducir prácticamente cualquier archivo y también reproducir DVDs de la caja. El gran problema es que tienes que usar múltiples máquinas virtuales para que cada jugador logre un rendimiento estable, y eso significa que la respuesta es relativamente lenta. Tampoco tengo este enfoque para trabajar en una Mac todavía.
  • JMF es ridículamente desactualizado, horrible y no es realmente una opción en lo que a mí respecta. ¡He jugado con eso en el pasado y la experiencia no fue buena!
  • FMJ dice que es un reemplazo para JMF. Todavía tengo que hacerlo funcionar, al igual que la mayoría de las otras personas con las que he hablado, y eso en sí mismo me hace sentirme cansado de su calidad y comprensión, ¡incluso si consigo hacerlo funcionar!
  • Xuggler es genial para lo que hace, tiene tutoriales brillantes y está muy bien escrito. Pero si bien es genial para el trabajo de transcodificación de bajo nivel, reproducir un video y obtener los marcos en el orden correcto y en sincronía es una pesadilla para funcionar correctamente, y de nuevo agrega más código, lo que significa más mantenimiento, potencialmente más errores etcétera etcétera...
  • Todavía no he probado GStreamer-Java con enojo, aunque no parece ser compatible con la reproducción de DVD (es una aplicación de código abierto en la que estoy trabajando, por lo que los complementos comerciales tampoco son una opción) y su compatibilidad con los códecs no parece ser el más ancho.
  • JCodec es un esfuerzo interesante, el único que he visto para implementar soporte de video desde una perspectiva pura de Java, pero falta soporte para formatos en este momento y es un proyecto relativamente nuevo.
  • Escribo algo en una biblioteca nativa diferente para cada plataforma que quiero apoyar. Esta es la opción de último recurso absoluta debido al mantenimiento adicional y el tiempo de codificación que requeriría.

En función de lo anterior (o de cualquier otra cosa que se te ocurra), ¿qué opciones recomendaría la gente y hay otras sensatas que me haya perdido? ¿O alguna otra gente cree que podría estar disponible en el futuro cercano?


Actualmente estoy usando la biblioteca OpenImaj http://openimaj.org/tutorial que tiene una

XuggleVideo and XuggleAudio class

Sugiero que uses eso e implementes tus propios mecanismos de enhebrado para reproducirlos. Actualmente estoy trabajando en un reproductor multimedia con la esperanza de que funcione bien en los formatos de video "populares" ya que

VideoDisplay class

en la biblioteca hace un buen trabajo, pero la reproducción es un poco entrecortada y la biblioteca se implementó con swing en mente y adjuntando el

ImageComponent

a un nodo oscilante no parece funcionar por alguna razón en JavaFx pero puedo obtener imágenes de un video que se muestra por el momento y espero tener algo de suerte con esto.


Después de investigar mucho sobre diferentes opciones y probar algunas, me he ido con VLCJ después de todo, pero aquí está el truco: todas las cosas de VLCJ se hacen en VMs fuera de proceso. Es un poco más complicado de configurar (ver here cómo lo hice) pero luego puedes lanzar todo lo que desees y funciona bien (actualmente usas 3 jugadores sin proceso, sin problemas de estabilidad).

Xuggler fue genial, pero desafortunadamente demasiado bajo para mí: la gran cantidad de reinvención de la rueda (y una rueda peor) requería solo para obtener la reproducción con la búsqueda de algo que me desanimó un poco; Sentí que demoraría una eternidad en resolver todos los problemas. Para la codificación / transcodificación / otro trabajo de video de bajo nivel, sin embargo, lo recomiendo sinceramente, lo mejor sin lugar a dudas.

Advertencias con mi enfoque elegido Bueno, si las máquinas virtuales externas no se cierran explícitamente continuarán reproduciendo el video en segundo plano incluso después de que la aplicación se haya cerrado, y la depuración se hace más difícil con este enfoque. Tampoco he verificado que se ejecute en Mac todavía, y mi sugerencia inicial probablemente no se deba a que, por lo que he escuchado, MacOS no permita que un proceso controle la ventana de otro sin permiso explícito con código nativo. Sin embargo, eso debería ser posible con un poco de trabajo.

Como un spin-off para el proyecto en el que estoy trabajando, en este momento podría ver si puedo concluir toda esta funcionalidad fuera del proceso en un marco de video Java simple que usa VLCJ debajo. Si alguien estuviera interesado en esto (no puedo prometer nada, pero cuanto más me interese, es más probable que trabaje en él) ¡no dude en hacérmelo saber!

Así que después de mis investigaciones y hallazgos, recomendaría ir con VLCJ (pero definitivamente usando reproductores fuera de proceso) si solo quieres reproducir / grabar / transmitir cosas de video, y Xuggler si quieres hacer cualquier video de bajo nivel con el códecs en sí mismos. En el momento de escribir esto, simplemente no existe una buena solución de Java, y probablemente se mantendrá de esa manera por un tiempo, afortunadamente, aunque es posible obtener resultados decentes con bibliotecas nativas multiplataforma. ¡Solo requiere mucho más trabajo!


Estoy de acuerdo con permanecer alejado de JMF. Especialmente si quieres reproducir DVD''s. Incluso JMF depende del código nativo para algunas de sus funcionalidades. Probablemente no va a alejarse de tener algún tipo de dependencia nativa de todos modos. Otra opción sería FMJ. Es una versión de código abierto de JMF. Aunque no he tenido mucha suerte con eso.

Mi sugerencia sería ir con VLCJ. Estaba explorando esto cuando necesitaba una solución de medios. Desafortunadamente se lanzó bajo la GPL, así que no puedo usarlo en mi aplicación, pero parece que debería poder manejar lo que quieres.

Además, mi otra publicación puede ser de su interés. Link

Además, Xuggler podría ser útil.


Puedo recomendar los enlaces gstreamer-java . Como su nombre indica, envuelve la API GStreamer en clases de Java. De esta forma, tiene acceso a las capacidades de gráficos de procesamiento de medios que proporciona GStreamer. Esto puede ser realmente útil si desea realizar tareas más avanzadas como la transcodificación.

Además, si mal no recuerdo, había un complemento comercial para GStreamer que admitía la reproducción de DVD y venía con una licencia para el CSS. Si esto no es importante para tu caso de uso, siempre puedes elegir uno de código abierto (el único que alguna vez necesité).


Usé jffmeg en algunos de mis proyectos (ffmeg java bindings), hasta ahora no he tenido ningún problema. http://jffmpeg.sourceforge.net/documentation.html . También usé qt-jambi, pero nunca intenté su biblioteca de videos (phonon), esto también puede resolver su problema.


Pruebe Xuggler , que envuelve las famosas bibliotecas FFmpeg en Java.