videos pesados para online link linea ligeros convertir como java video flv opencms transcode

java - pesados - Convierta programáticamente un video a FLV



convertir videos pesados a ligeros (11)

Actualmente estoy trabajando en una aplicación web que necesita aceptar videos subidos por usuarios en cualquier formato (.avi, .mov, etc.) y convertirlos a flv para jugar en un reproductor basado en flash.

Dado que el sitio está basado en OpenCms, la mejor solución sería un complemento listo para OpenCms que permitiera subir y reproducir videos haciendo la operación de transcodificación en segundo plano, pero solo un conjunto de clases de Java para hacer el transcodificador sería genial y luego Podría hacer la carga y la parte de reproducción por mi cuenta.


Si quieres hacerlo con Java, puedes hacerlo muy fácilmente usando Xuggle.

Tienen un gran sitio web que explica cómo hacer todo

la documentación está aquí: http://build.xuggle.com/view/Stable/job/xuggler_jdk5_stable/javadoc/java/api/index.html

y un excelente tutorial que le indica cómo hacer lo que quiere está aquí: http: //blog.xuggle.com/2009/06/05/introduction-to-xuggler-mediatools/

Proporcionan una manera fácil de hacer lo que desea en el primer tutorial, que es simple transcodificación.

Descubrí que funciona bien para codificar en flv. Lo que hace detrás de las escenas es utilizar ffmpeg, por lo que cualquier cosa que se dispare ffmpeg también fallará con xuggle.

El código java muestra relevante es:

// create a media reader IMediaReader reader = ToolFactory.makeReader("videofile.flv"); // add a viewer to the reader, to see the decoded media reader.addListener(ToolFactory.makeWriter("output.mov", reader)); // read and decode packets from the source file and // and dispatch decoded audio and video to the writer while (reader.readPacket() == null) ;

Que obtuve de http: //wiki.xuggle.com/MediaTool_Introduction

Si quieres un código clojure completamente funcional ... aquí está :)

(import ''(com.xuggle.mediatool ToolFactory)) (import ''(com.xuggle.mediatool IMediaDebugListener IMediaDebugListener$Event)) (defn readerRecurse "calls .readPacket until there''s nothing left to do2" [reader] (if (not (nil? (.readPacket reader))) ; here .readPacket actually does the processing as a side-effect. true ; it returns null when it has MORE ro process, and signals an error when done... (recur reader))) (defn convert "takes video and converts it to a new type of video" [videoInput videoOutput] (let [reader (ToolFactory/makeReader videoInput)] (doto reader (.addListener (ToolFactory/makeWriter videoOutput reader)) (.addListener (ToolFactory/makeDebugListener (into-array [IMediaDebugListener$Event/META_DATA])))) (readerRecurse reader)))

ahora todo lo que tienes que hacer es algo así como:

(convert "/path/to/some_file.stupid_extention" "/path/to/awesome.flv")

¡y tu estas listo!


Hay una gran herramienta de código abierto llamada FFmpeg que utilizo para transcodificar mis videos. Utilizo PHP haciendo llamadas de shell para que cobre vida, pero no me puedo imaginar que sería demasiado difícil hacer que funcione bien con Java. (Quizás este podría ser un buen punto de partida para ti).

Suministro semanalmente lotes de más de 30 gigas de instalación y siempre sale como material de calidad. La única parte difícil para mí ha sido compilarla para manejar una gran variedad de formatos de video. En el lado positivo, esto me ha proporcionado el trabajo pesado que necesito.


La codificación de archivos en un formato a otro requiere mucho tiempo de desarrollo para hacerlo bien, razón por la cual hay muy pocos en términos de decodificadores / codificadores que puedan realizar esas hazañas. Los que son más conocidos y utilizados son ffmpeg y mencoder.

Lo que debe considerar es ver si la plataforma en la que se ejecuta (Windows / Mac OS X / Other Unix) tiene un conjunto subyacente de llamadas API que puede usar para decodificar los archivos y volver a codificarlos. . Windows tiene DirectShow y Mac OS X tiene Quicktime. No estoy seguro de si puede acceder a esas API usando Java.

FFMpeg tiene un contenedor Java disponible: FFMPEG Java , y también hay FOBS que tiene un JNI disponible para su contenedor de C ++ en ffmpeg. El último que encontré jFFmpeg , sin embargo, hay algunas publicaciones que encontré con Google que sugieren que el proyecto puede no estar vivo por más tiempo.

Su mejor apuesta sería mencoder de mplayer y / o ffmpeg. Ffmpeg puede instalarse como un binario independiente y luego llamarse desde otro código usando los comandos "shell" por defecto. Sin embargo, si no puede ejecutar comandos, puede necesitar usar un sitio web de conversión en línea como sugirió Mark Robinson.


Esto puede ser ligeramente tangencial, pero he descubierto que Panda Stream es una solución muy útil para todo tipo de problemas de codificación de video.

Todo lo que tiene que hacer es cargar el archivo de video en una instancia de Amazon EC2 que ejecuta Panda y codificará el video en los formatos y calidad deseados y emitirá una devolución de llamada al servidor de su aplicación con los detalles cuando esté listo. A continuación, puede usar el reproductor de Flash Video incluido o su propio reproductor para reproducir los videos en su sitio.

Es una solución muy escalable (gracias a Amazon EC2 & S3), rentable y personalizable en comparación con la suya propia.

Muy recomendable.

Actualizar:

La arquitectura de Panda es la siguiente:

Arquitectura de Panda Stream http://pandastream.com/images/panda_arch.gif

  1. Página muestra el formulario de carga de Panda en un iframe o ventana emergente
  2. Carga de video con la barra de progreso de AJAX
  3. Devolución de llamada API cuando se completa la codificación
  4. Video transmitido al usuario


Puede codificar video en Java utilizando Xuggler , que es una API de Java que usa el código C de FFmpeg de forma nativa entre bastidores.


También podría estar interesado en saber que ahora hemos lanzado Panda como un servicio alojado, lo que facilita la configuración y el escalado :)

http://pandastream.com


sí, ffmpeg es lo mejor para este trabajo ... Usamos ffmpeg para convertir video durante mucho tiempo y funciona con todos los formatos de video ... existen numerosas opciones ...


Básicamente tiene dos opciones si desea alojar, transcodificar y transmitir archivos flv (y no desea comprar una aplicación de transcodificación de video): puede llamar a FFMpeg / MEncoder o puede usar un servicio web externo. También podría eludir el problema completamente al permitirles incrustar videos de YouTube en su sitio.

Si vas a la ''ruta local FFMpeg'', sugeriría simplemente usar ProcessBuilder y construir una línea de comandos para ejecutar FFMpeg. De esta forma, usted obtiene el control total sobre lo que se ejecuta, evita JNI, lo cual es una pesadilla absoluta para trabajar, y mantiene el código específico del sistema operativo fuera de su aplicación. Puedes encontrar FFMPeg con todos los detalles para prácticamente cualquier plataforma. Es muy probable que ya esté en tu servidor.

Lo bueno de la ruta ''Local FFMPeg'' es que no tienes que pagar ningún hosting adicional, y todo se ejecuta localmente, aunque tu administrador de hosting podría comenzar a quejarse si estás usando una gran cantidad de discos y CPU. Hay algunas otras preguntas de que hablan de algunos de los errores usando FFMpeg para crear flvs que puedes jugar en el flash.

La ruta del servicio web es agradable porque hay menos configuración involucrada. No he usado Hey! Watch pero parece prometedor. PandaStream es fácil de configurar y funciona bien, además de que obtiene todos sus videos en S3 sin ningún esfuerzo adicional.



Podría intentar usar un servicio en línea como HeyWatch para convertir su video. Nunca lo usé pero dicen

"carga transparente, envía videos de forma transparente desde tu sitio web"

No es una solución java, pero no debería preocuparse por el sistema operativo en el que se encuentra su aplicación web.

Si OS no fue un problema, estoy de acuerdo con la respuesta que dio elBadDawg . No sé y no he tenido suerte para encontrar una solución java pura.