Si quieres hacerlo con Java, puedes hacerlo muy fácilmente usando Xuggle.
Ellos 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 dice 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 desee en el primer tutorial, que es simple transcodificación.
He encontrado que funciona bien para la codificación de flv. Lo que hace detrás de las escenas es usar ffmpeg, por lo que cualquier cosa que se dispare ffmpeg también fallará con xuggle.
El código Java de ejemplo 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)
;
Qué obtuve de http: //wiki.xuggle.com/MediaTool_Introduction
Si quieres algo de código clojure completamente de trabajo ... aquí es :)
(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 tiene que hacer es algo como:
(convert "/path/to/some_file.stupid_extention" "/path/to/awesome.flv")
y listo!
El uso de la CPU es definitivamente algo que deberías tener en cuenta si trabajas en un entorno de alojamiento compartido. La mayoría de los planes ofrecen mucho espacio en disco y ancho de banda, pero son muy tacaños con la potencia de CPU que utiliza. – Kibbee