Introducción
Esto es un primer manual de uso para ffmpegx, un interface gráfico a través del cual podemos tener acceso a herramientas muy potentes (y gratuitas) de UNIX para la conversión de video y audio. No habrá ninguna necesidad de entender todos los procesos subyacentes para conseguir hacer buenos DivX/VCD/SVCD (por nombrar algunos formatos) en un tiempo razonable y con una calidad a la altura de aplicaciones profesionales.
Descarga la versión actualizada de ffmpegx de major4 (www.homepage.mac.com/major4), y sigue las instrucciones de instalación. Una vez estén instalados todos los binarios y el programa principal, la GUI está lista para funcionar.
FfmpegX está basado en programas gratuitos Unix para realizar la descodificación, codificación y multiplexado del audio y del video. Para cumplir con licencias de estas tecnologías, es necesario descargar los binarios por separado e instalarlos. Las instrucciones están en el propio instalador para los binarios (engines) que se suministra con el ffmpegX 0.0.6.
A disfrutar...
Parte Una: El Interface
Capítulo Uno: Video

Cuando comienzas a usar el ffmpegX, se cuenta con que previamente has preparado el material de origen. Este podria ser un .VOB del DVD de la boda de tus primos, una pelicula de QuickTime o incluso cualquier película que se mueva o haga ruido. Haz click en "Open" y navega hasta ese fichero origen. Después haz click en "Save As" y ponle nombre a tu proyecto final. Comprueba que vas a tener espacio suficiente en el disco de destino, especialmente si has chequeado la opción "Keep Elementary Streams" de la pestaña Tools (se verá en el capítulo cinco).
También podemos seleccionar directamente un DVD como dispositivo de entrada en el menú desplegable del campo “Open”. Si lo hacemos así, habrá que marcar qué pistas y capítulos vamos a comprimir (se explica más adelante) en las casillas que hay debajo del menú “Profile”.
Para saber cómo se ha de preparar previamente el material a codificar hay un pequeño apéndice al final de esta guía.
Lo primero que hay que hacer es elegir el Codec de video que vamos a usar. O lo que es lo mismo, qué formato de video pretendemos conseguir: VCD, SVCD o DivX (si no estás seguro de que formato es el que mas te conviene, hay una pequeña noción sobre formatos en el final del capítulo cuatro de esta guía). La manera mas fácil de empezar es elegir uno de los templates (“plantillas”) bajo la pestaña “Quick Presets” (menú desplegable derecho inferior).
Independientemente del formato que elijas hacer, con ffmpegX tenemos control total sobre cada uno de sus parámetros.
Al lado del menú “Video Codec”, hay un chekbox para seleccionar “Encode”. Nos interesa deseleccionarlo solo en el caso de que vayamos a trabajar únicamente sobre la pista de audio de nuestro material de origen. Esta opción no funciona cuando se parte de un archivo mpeg2 multiplexado.
Abajo, a la izquierda esta la calculadora de bitrate. Con ella vamos a averiguar cual es el máximo bitrate al que podemos comprimir nuestro archivo, en proporción con su tamaño original y el tamaño del destino que queramos para él.
Pondremos la duración en minutos de nuestro video original en el cuadro “min keep in”, el soporte de destino (CDRs, DVD-R) y su numero en los menús desplegables, y pulsamos sobre el botón de la izquierda “calc rate”. El valor de bitrate que nos da es aproximadamente el máximo que podremos usar. El valor que nos da si pulsamos el botón “calc best” es el óptimo para el material de origen, y sólo se usa para comparar con el anterior. El botón “calc time” nos da un resultado de tiempo máximo de material que podríamos comprimir usando el bitrate que aparece en la ventana superior.
Si no estamos seguros de la calidad que nos va a dar un bitrate u otro (más alto o más bajo), siempre podemos comenzar la codificación y chequear el archivo que está generando el ffmpegX con VideoLanClient antes de que se termine de hacer (de hecho, prácticamente se puede ver desde que empieza a codificarse).
Es imprescindible antes de hacer cualquier calculo de tiempo o de bitrate que hayamos elegido previamente el codec o formato que deseamos obtener, porque los valores de bitrate y tiempos no coinciden para los distintos codecs y en ese caso el resultado estará lejos de lo que pretendíamos.

Nota al crear SVCDs/XSVCDs: ffmpegX usará un bitrate de 2500 una vez que se haya seleccionado el template SVCD, independientemente del valor que se introduzca a posteriori en el cuadro de bitrate. Para evitar esto y poder seleccionar otros valores de bitrate, es necesario ir a la pestaña “Options” (que veremos en el capitulo cuarto), seleccionar en “Profile” la opción XSVCD en lugar de SVCD, y realizar los cambios que sean necesarios en la pestaña “Tools”. Para mas detalles consultar el capitulo ocho (DVD a SVCD) y nueve (DVD a otros formatos no estándar).

La parte derecha de la pestaña “Video” es para los parámetros. Aquí es donde decidimos las características concretas que tendrá nuestro archivo de video final. El menú desplegable “Autosize” contiene un buen numero de opciones para elegir el formato de pantalla, aspecto y tamaño, aunque también podemos introducir estos valores numéricamente en las casillas de “Video Size” situadas justo encima de este menú (aunque para esto es mejor estar seguro de lo que se hace…). El “Framerate” es importante; debemos seleccionar el mismo que el de nuestro material original (normalmente Pal) para evitar pérdida de sincronía, frames y respetar el aspecto del video resultante con respecto al primero.
Las casillas de “Crop” nos permiten excluir una sección del video entrante para no invertir bitrate en áreas que no nos interesan, o que aparecen simplemente en negro. Por ejemplo, si nuestra fuente es de formato 4:3 y nos muestra una imagen en Widescreen, tenemos barras encima y debajo de esa imagen que no deseamos se nos conviertan en parte del archivo final (sobre todo si nos interesa ahorrar el máximo espacio); además del tiempo que se invierte en comprimir esa información inútil… Solo hay que introducir en pixels los valores para W (ancho), H (alto), X e Y (coordenadas a partir de las cuales se toma el crop) y ffmpegX ignorará esa área. Si no estas seguro de estar introduciendo valores correctos, haz primero una prueba antes de poner a comprimir todo el material para asegurarte de que el resultado es satisfactorio (recuerda que el archivo resultante se puede visualizar mientras se comprime, con VLC). Cuando estamos creando DivX estos valores nos los puede dar la lectura del Terminal (ver apéndice).
Encima de los valores de “Crop” se encuentran las casillas para seleccionar las pistas y capítulos cuando encodamos directamente desde un DVD. No es la opción más fiable y es preferible seguir usando un extractor para el material de origen. Solo resulta útil cuando queremos codificar una parte de un DVD.
Para iniciar la codificación, hay que pulsar el botón “Encode” de la parte inferior del interface. Se nos abrirá el Terminal con los procesos mandados por el ffmpegX.
Capítulo Dos: Audio

En la pestaña “Audio” vamos a elegir el codec final para el sonido, y el bitrate de audio que mas se le acomode. Es la parte más sencilla y sólo se recomienda cambiar los valores que nos da cada preset cuando se sabe lo que se está haciendo… Los formatos más comunes son: mp3 (para DivX), mp2 (normalmente para VCD y SVCD) y ac3 (para DVD). Si decides alterar los presets (por ejemplo, comprometiendo la calidad del sonido a un bitrate mas bajo para dejar mas sitio al video), es necesario tener claro que formatos de audio se pueden usar con cada tipo de archivos de video/soportes. Por ejemplo, un SVCD norma debe llevar el audio codificado obligatoriamente en mp2.
El checkbox “Encode” sólo lo dejaremos sin marcar en el caso de que no nos interese el audio en el proyecto, en el caso, p.e., de que sólo pretendamos encodar video porque el audio lo tenemos comprimido de origen, o prefiramos encodarlo posteriormente y multiplexarlo al final.
Debajo del cuadro de resolución (que, insistiendo, no se debe alterar una
vez seleccionado el template si no se sabe lo que se hace: p.e., un DVD
norma lleva el audio siempre a 48Khz) está el cuadro de ganancia, “gain”.
Éste es especialmente útil al pasar de vob a SVCD dado que los DVDs suelen
sonar más bajos (para aprovechar el margen dinámico del soporte). Admite
valores de -96 a +96 dB.
En las últimas versiones del ffmpegX se ha incorporado la opción “Encode
Subtitles” bajo la casilla de la ganancia de audio. Esta sólo es válida para
la creación de DivX donde los subtítulos (hay que especificar un número para
el que queramos) estarán superpuestos continuamente en la imagen. Para ello
es necesario instalar los paquetes de lectura de subtitulos incluidos con la
descarga del ffmpegX.
En la parte derecha de la ventana “Audio”, podemos elegir teóricamente entre varias pistas de audio a codificar: Si nuestro material de partida es un .vob que incluye el video y audio en varios idiomas, aquí podemos elegir el que nos vamos a quedar para el archivo final. Para ello hay que saber a que número se corresponde (en un DVD, 1 suele ser la pista en inglés, 2 en español…). Si la conversión no funciona, podemos probar a chequear la casilla “Invert Mapping”
El botón “Add Audio” permite importar un audio externo al proyecto desde un archivo aparte, y multiplexarlo (si esta esa opción señalada en la pestaña “Tools”) con el de video, evitándonos el tener que hacerlo a posteriori.
Para iniciar la codificación, hay que pulsar el botón “Encode” de la parte inferior del interface. Se nos abrirá el Terminal con los procesos mandados por el ffmpegX.
Capítulo Tres: MPEG1/4

Cuando seleccionamos un template de DivX, fast DivX o fast mpeg1, la pestaña “Options” nos muestra las opciones que en versiones anteriores del ffmpegX aparecían bajo la pestaña “MPEG1/4”.
En esta ventana se pueden seleccionar muchos de los aspectos de la codificación a mpeg1 o DivX. En la parte izquierda, el checkbox “High Quality” nos permite activar, lógicamente, el modo alta calidad. De esta forma alargamos un poco el tiempo de compresión para obtener una mejor calidad. Podemos hacer pruebas chequeando y deschequeando esta opción para comprobar si el tiempo extra merece la pena; sus resultados también dependen en buena medida de la calidad del material original (vamos, que no hace milagros….
“Use B-frames” y “4 motion vectors” son aspectos avanzados de la codificación mpeg4. Sobre estos se puede consultar en la web de Apple.
“Deinterlace” afecta tanto a mpeg1 como a mpeg4. Brevemente: Si sabes que el material de origen es entrelazado, marca esta opción. Si no lo tienes claro, haz un pequeño test marcando y sin marcar esta opción, y decide. Ten en cuenta que aunque el video aparezca con “flickeos”, estos no se apreciaran en una TV, por lo que en función del uso que le vayas a dar a tu material, el entrelazado puede no ser determinante.
“Use Only I-frames” te permite basar la codificación únicamente en los I-frames del material de origen. Los i-frames son los frames que se codifican tal cual, sin compararlos con el anterior y posterior y conservando toda su información. El resto de frames se codifica verificando sus diferencias con el I-frame.
“Two Pass Encoding” aumenta la calidad del archivo final al hacer dos pasadas: la primera para analizar el material de origen y determinar que partes necesitan mas o menos compresión, mas o menos bitrate, y la segunda pasada para codificar con los parámetros obtenidos en la primera. Invierte mas tiempo en hacerlo pero los resultados son sensiblemente mejores.
“Encode 5 sec test clip” nos permite codificar 5 segundos (a partir del minuto 1 del material original, para evitar los negros del principio) para comprobar la calidad.
En la parte de la derecha, encontramos “Motion Estimation”, algo así como la estimación de movimiento del material de video original (si es mas o menos estático, si los movimientos son mas o menos rápidos, si hay cambios de planos consecutivos…). Este valor, combinado con el numero de frames que determinan un GOP (“group of pictures”, la distancia entre dos I-frames) indicaran al codec como se tiene que tratar nuestro material de origen. Solo comentar que la codificación mpeg1 y 2 necesita un valor de GOP mas pequeño que la codificación mpeg4. Pero estos valores no se deben alterar si se usan los templates del ffmpegX y mucho menos sin tener claro lo que se hace…
Debajo esta la opción de “Adaptative Quantizer”. Para mantener un bitrate constante, se debe permitir una perdida de calidad variable (entre 0 y 31). Si “qmin”=”qmax”, la calidad será constante, es decir, se aplicara un bitrate variable. O sea… mejor no tocar y dejarlo como nos marque el template…
Para iniciar la codificación, hay que pulsar el botón “Encode” de la parte inferior del interface. Se nos abrirá el Terminal con los procesos mandados por el ffmpegX
Capítulo Cuatro: VCD/SVCD

Cuando seleccionamos un template basado en el codificador mpeg2enc, la pestaña “Options” nos muestra las opciones que en versiones anteriores del ffmpegX aparecían bajo la pestaña “VCD/SVCD”.“Encode High Frecuencies” es una herramienta que aumenta la calidad a bitrates bajos cuando el material de origen esta codificado a bitrates altos. Lógicamente, afecta al tiempo de compresión. Es conveniente hacer pruebas para verificar si merece la pena su uso. En la practica, ffmpegX crea un mpeg2 VBR cuando se chequea esta opcion.
“Set 3:2 Pulldown” permite codificar material a 30fps como NTSC (23,976fps), y “Undo 3:2” revierte el proceso. O sea, nada si se trata de material en Pal.
“No SVCD Scan” se usa para desactivar la creación de SVCD scan offsets (usados al avanzar/retroceder rápido la imagen en un SVCD) si es que éstos causan problemas (sucede con algunos reproductores de DVD).
“Bicubic Scaling” (seleccionado por defecto) es un algoritmo de alta calidad para escalar imágenes. La codificación va mas rápida con esta opción deseleccionada, pero la calidad final sufre…
“B&W” nos permite obtener un archivo final en blanco y negro… Que cosas. Es útil si pretendemos codificar un material de origen en blanco y negro, pero, p.e., con ruido de TV en color.
“Deinterlace” se usa para desentrelazar el material de origen (procedente de DV, p.e.).
“Denoise” es un filtro que intentará limpiar el material de origen antes de codificarlo. Puede ser útil cuando queramos comprimir, p.e., material procedente de VHS.
“VOB letterbox” obliga al codec a convertir un formato de video Widescreen anamórfico en 4:3, generando las correspondientes barras negras en los extremos superior e inferior de la imagen. Ojo que solo funciona cuando el material de origen es (como el nombre indica) un archivo .vob.
“Altivec”, para los que tengan un G4. Es importante desactivarla si la maquina no es un G4 porque el proceso de codificación no se completara.
“mplayer decode” y “QT decode” nos permiten elegir que engine será la encargada de leer el material de origen. Mplayer se usa para codificar directamente desde un DVD. En general para el resto se debe usar QT; si no seleccionamos ninguna de las dos, será ffmpeg el que lea el archivo original. Si el archivo de origen es un mpeg2 y tenemos seleccionado QT decode, es necesario tener instalado el componente de reproducción mpeg2 de Quick Time. Si no lo tenemos, podemos deschequear las dos opciones y que sea ffmpeg el que lea el mpeg2 original. Si el archivo de origen en un DivX, es necesario tener instalados los codecs para la reproducción de DivX con QT.
“Luminance”, “Saturation” y “Sharpness” son valores de contraste, saturación y agudeza, entre 0 y 255 (%). Para que funcionen debe estar activada la opción “Denoise”. Es preferible no usar valores muy altos porque aumentan el ruido del material final.
“Profile”, en la parte derecha, es un ajuste importante que puede afectar tanto al template como a los ajustes realizados en la pestaña “Video” y “Audio”, incluso sobrescribirlos.
- “Standard SVCD”: mpeg2 video VBR hasta 2500kbps y mp2 audio a 44.1KHz y 224bps.
- “XSVCD”: permite el control sobre los settings de bitrate tanto para el audio como para el video fuera del Standard SVCD. Es necesario también seleccionar XSVCD en la pestaña “Tools”, en el menú “Mux As…”, porque si no el archivo resultante seguiría siendo un SVCD. Hay que tener en cuenta que el XSVCD no es un formato Standard y que puede dar problemas de reproducción en DVDs domésticos.
- “Generic MPEG2”: el archivo obtenido no esta definido para ningún formato final en concreto.
- “Standard VCD”: mpeg1 video CBR a 1150kbps y mp2 audio a 44.1KHz y 224bps. Este profile sobrescribe cualquier ajuste referido al bitrate que podríamos haber seleccionado previamente.
- “XVCD”: permite el control sobre los settings de bitrate tanto para el audio como para el video fuera del Standard VCD. Es necesario también seleccionar XVCD en la pestaña “Tools”, en el menú “Mux As…”, porque si no el archivo resultante seguiría siendo un VCD. El XVCD tampoco es un formato Standard.
- “Generic MPEG1”: el archivo obtenido no esta definido para ningún formato final en concreto.
- “DVD”: mpeg2 video VBR sin definir, audio en mp2 (puede ser también ac3) a 48KHz y 224kbps.
El menú “Deinterlace” permite elegir el modo de desentrelazado: Frame o Field; en ambos casos, se entiende como frame first o field first.
El menú “Theath” nos señala el comportamiento del encoder con respecto al uso de la CPU, para segundo plano, normal o equipo Dual.
“VBV Size” es un cuadro para entrar el valor en kb del buffer del decodificador de video… Es otro de los valores que dejaremos a los templates. Para SVCD y VCD esta definido por norma.
“Sync” se utiliza para introducir valores que nos permitan colocar en sincronía el audio y el video cuando hay un problema ligero de desincronización. Un valor positivo en milisegundos retrasa el video con respecto al audio; un valor negativo en milisegundos adelanta el video con respecto al audio.
“Quantizer” permite especificar un nivel aceptable de perdida de calidad dentro de los limites del bitrate variable. Cuanto mas pequeño sea este valor, mejor será la calidad.
“Constant Bitrate” hace lo que dice: mantener el valor del bitrate constante. Esto disminuye ligeramente los tiempos de compresión pero puede comprometer la calidad con pasajes que requieran un bitrate flexible.
Para iniciar la codificación, hay que pulsar el botón “Encode” de la parte inferior del interface. Se nos abrirá el Terminal con los procesos mandados por el ffmpegX
Capítulo Cinco: Tools

Esta pestaña del ffmpegX se puede usar sin necesidad de lanzar procesos de codificación. Contiene herramientas de postproducción muy útiles. La ventana de la izquierda nos permite elegir la autoría de nuestro material de video: VCD (bin/cue), SVCD (XA) e incluso DVD (VIDEO_TS). también nos permite dividir el video final en tantos trozos como nos sean necesarios para hacerlos coincidir con el soporte final (CDRs o DVD-Rs), siempre teniendo en cuenta los ajustes que habíamos hecho con la calculadora de bitrate en la pestaña “Video”.
Los archivos bin/cue y XA se grabaran en Toast en formato CDRom XA. Los Archivos VIDEO_TS se grabaran en Toast en formato DVD.
Es recomendable chequear la opción “Keep Elementary Streams” (en algunos casos, imprescindible) que, aunque nos ocupe mas espacio en disco, nos va a dejar copia de los archivos de audio y video antes de multiplexarlos. Siempre nos pueden servir por si alguna parte del proceso ha ido mal o incluso de esta forma podemos aprovechar únicamente el archivo que nos interese (a veces solo el video…).
“Echo Command Line” nos deja ver en el terminal el conjunto completo de instrucciones que manda el ffmpegX. Es útil para la detección de problemas (si uno esta familiarizado con el lenguaje del Terminal).
La parte de la derecha de la pestaña “Tools” sirve para, manualmente, multiplexar audio y video, procedente del ffmpegX o de cualquier otro programa, y para activar los procesos de autoría de la parte izquierda (con el checkbox de “Postprocess”). Hay que recordar que las opciones del menú “Mux As…” y “Postprocess” están ligadas a los “Profiles” de la pestaña “Options” cuando se lanza un proceso de codificación, pero también funcionan independientemente si hemos seleccionado los archivos con los botones “Video” y “Audio” de la pestaña “Tools”.
El checkbox “Demux” nos demultiplexara el archivo mpeg que le hayamos señalado en el botón “Video”.
“Info” nos muestra información de los archivos seleccionados con los botones “Video” o “Audio”.
“View” nos lanzara Mplayer con el archivo que se encuentre seleccionado en la ventana “Video”. Es necesario tener Mplayer instalado. “Info” nos muestra información sobre el mismo archivo.
“Avi Split” permite dividir un archivo DivX (selecionado en la ventana “Video”) en los minutos que le indiquemos. Es necesario tener Mplayer instalado.
Para activar los procesos (independientes de la codificación) de esta pestaña no hay que darle al botón de “Encode” (abajo), sino al botón de “Go!”.
Apéndice:
1.- Los Quick Presets.
- SVCD (Pal/NTSC) usan mpeg2enc para la codificación del audio y del video. Puede seleccionarse, en la pestaña “Options”,“mplayer decode”, “QT decode” o ninguno de estos dos (en cuyo caso sería “ffmpeg decode” por defecto) para decodificar el archivo de origen. Si este es un mpeg2 o un .vob y seleccionamos “QT decode”, es necesario tener instalado el componente mpeg2 del QT. “mplayer decode” es necesario para leer directamente desde un DVD. “ffmpeg decode” no es adecuado para leer PAL, mpeg2 o vob a VBR. “QT decode” funciona muy bien en la mayoria de los casos.
- CVD (Pal/NTSC)es un formato mpeg2 parecido al SVCD que usa un tamaño de pantalla ligeramente inferior a este: 352x480 para NTSC y 352x576 para PAL. Muchos lectores DVD domesticos que soportan SVCDs son capaces de leer CVDs. Ademas, los mpeg2 en formato CVD son aceptados para autoria de DVDs (formato 1/2D1), incluido DVDSP. La autoria de un CVD es igual al la de un SVCD.
- Hi-Bitrate DVD (Pal/NTSC) y Low-Bitrate DVD (Pal/NTSC): plantillas para la creación de contenidos mpeg2 video para DVD. La diferencia entre Hi/Low esta en el bitrate y en el tamaño de la imagen (la mitad para Low-Bitrate).
- mpeg1 XSVCD (Pal/NTSC) usa mpeg2enc (el mas rapido) para crear SVCDs fuera de norma con video en mpeg1.
- Fast DivX (Pal/NTSC) usa ffmpeg para generar DivX. No soporta lectura directa de DVD como fuente ni subtitulos.
- DivX (Pal/NTSC) usa mencoder para generar DivX. Soporta lectura directa de DVD y subtitulos. Usando la opción “Encode 5 sec test clip only” el Terminal nos dara los valores de Crop autodetectados para ponerlos en las casillas “Crop WHXY”. Mencoder sólo puede comprimir el audio en formato mp3.
- VCD (Pal/NTSC) usa mpeg2enc para generar VCDs Standard (más lento).
- fast mpeg1 (Pal/NTSC) usa ffmpeg para generar VCDs Standard.
FfmpegX por Major (www.homepage.mac.com/major4).
Manual original de Wizeman (oldelrocho@hotmail.com) version 0.1c.
Traducción y Actualización, Oscar Blanco (obseco@mac.com).
Gracias a pesuca y JTimeline por su ayuda para elaborar esta guía. Y a Macuarium por soportarnos.
Para mas información: www.macuarium.com/foro