Herramientas de Video desde terminal: FFmpeg y MEncoder
Escrito por danitxu en /usr/share/doc, tags: ffmpeg, mencoder, videoLas herramientas de consola aquí indicadas, y cuyas notas básicas dejo en el wiki, se emplean básicamente para:
- [De]Codificación de contenidos audiovisuales, y conversión de formatos (video y/o imágenes).
- Filtrado: cortes en tiempo, recorte de zonas, escalado, operaciones sobre color, etc.
- [De]multiplexación de streams: video, audio, subtítulos.
- Usos en otras aplicaciones como visores, streaming o en herramientas de medición de rendimiento
Las más empleadas son FFmpeg y MEncoder (de la familia del conocido MPlayer). Ambas tienen licencia GPL/LGPL, y son multiplataforma. Se podría añadir transcode, conjunto de utilidades para entornos Unix-like, pero está algo limitado en prestaciones y se basa bastante en ffmpeg. Tampoco entraría en esta categorización VLC, framework que aunque ofrece APIs de programación está más orientado al uso con interface gráfico y no desde terminal.
¿Cuál es mejor, ffmpeg o mencoder? (qué, ¿montamos un
video-flame?) No lo sé, pero una comparativa seria habría de incluir criterios como:
- Nº de codecs, formatos o contenedores, y dispositivos soportados.
- Funcionalidades.
- Tiempos de procesamiento, a su vez dependiente de los algoritmos de programación y del aprovechamiento de las capacidades del procesador gráfico (OpenCL, VA API, VDPAU de Nvidia, y XvBA de AMD/ATI).
Así, MPlayer, primo de MEncoder, soporta desde hace unos 2 meses la [privativa] tecnología Blu-ray, (format
o finalmente ganador frente al HD-DVD y que ya está disponible para GNU/Linux), y esto aún no lo hace FFmpeg. Al respecto, éste tiene dos proyectos en Google Summer of Code (FFmpeg ha participado en varios: ver 2008,2009 e ideas). Uno para resolver el problema del DRM de AACS (sería hacer algo semejante al DumpHD), y otro para soportar el formato entrelazado de streams VC-1.
Ahora bien, Mencoder se apoya mucho en codecs de ffmpeg (libavcodec), aportando versiones propias de algunos ya existentes en ffmpeg, ej. nuppel, XviD o H.264.
Me centraré en FFmpeg porque lo he usado más.
Su creador, Fabrice Bellard, es también el fundador de QEMU y tiene otras peculiaridades
interesantes.
FFmpeg está organizado internamente en varias librerías (ver entrada de wikipedia, a añadirle libavdevice para la versión GNU/Linux), de las cuales libavcodec es usada en otros muchos proyectos como VLC, MPlayer (de hecho MEncoder usa mucho ésta y propone versiones propias de algunos codecs como XviD o H.264), xine, gimp, blender, google chrome, kdenlive, k3b,… Como anécdota señalar que también existe una lista negra de sistemas que violan de la licencia de FFmpeg.
Respecto a los codecs, libavcodec admite muchos pero no todos debido a la privacidad de algunos fabricantes. Es ej, el caso de un video .mov hecho con Final Cut para Mac OS X que use el Apple Intermediate Codec (AIC): al menos a día de hoy ni siquiera puede ser visto con software para Windows.
Alguna vez he tenido que recompilar ffmpeg porque la versión base instalada de Kubuntu no incluía los codecs AMR de 3GPP usados en teléfonos móviles. Para quienes sean nuevos en lo de compilar, en el wiki dejo un bash script sencillo y con las opciones agrupadas.
Respecto a frontends gráficos, además de la utilidad de uso diario para quienes no prefieren la consola, pueden venir bien como recurso didáctico en el aprendizaje de estas herramientas. En el caso de MEncoder no he encontrado demasiada cosa actualizada, ni en los anunciados en la web oficial ni en los repos de Kubuntu karmic, salvo acidrip más orientada a ripear DVDs. En el caso de ffmpeg, está winff. Ambos usan GTK.
Antes de acabar, un aplauso a esas pocas personas que tanto y tan invisible esfuerzo han dedicado haciendo ingeniería inversa de codecs, para que otras muchas podamos aprovecharnos de sus resultados. Y otro aplauso para la gente que participa en el desarrollo de librerías como las aquí comentadas, que son la base para los visores de video de uso universal. Son los albañiles de una nueva tecnología más democrática y socializada.


















Entradas (RSS)
DivXConverter es un frontend para MEncoder, no de carácter general sino para generar videos en formato AVI cun subtítulos: http://code.google.com/p/foxoman/wiki/DivXConverter