Cómo Se Hizo Terroralia
Has pasado por los aspectos más llamativos de cómo se hizo Terroralia. Ahora vienen los detalles más gore de la cuestión: una explicación de los programas usados desde el punto de vista del usuario, los problemas encontrados y ejemplos concretos.
Público Destino
Si te estás planteando usar un ordenador para edición y montaje de vídeo digital, estás abierto a usar las mejores herramientas para una tarea, y quieres saber cómo hacer las cosas paso a paso, incluso replicando el proceso que se describe aquí: hemos hecho esta página para ti. Si no estás interesado en hacer vídeos, puedes ignorar esta página. Si te niegas a usar Linux o ya tienes claro tu forma de trabajo: es posible que encuentres información útil, o incluso ciertas herramientas para complementar las tuyas.
La Computación al Rescate
La gran ventaja que tiene el aficionado hoy día a la hora de hacer cortos es el uso de ordenadores. Tareas que antes eran un castigo, como la edición no lineal de vídeo (había que editar con dos vídeos VHS), de audio (un cuatro pistas parecía buena opción) o los efectos especiales (se dependía de lo que trajera la cámara), se hacen hoy día fácilmente en un ordenador. El resultado puede ser tan profesional como se quiera, dependiendo sobre todo del tiempo que se le dedique.
Hay que prestar atención al material y los programas usados. Como cualquier buen artesano, es importante disponer de herramientas que se puedan adaptar a la forma de trabajar de cada uno, aunque sea a martillazos. Por eso huiremos de programas propietarios y plataformas cerradas; el resultado será probablemente tan prefabricado como el instrumental.
Hardware
El ordenador es lógicamente la herramienta principal a considerar. Es importante fijarse no sólo en la potencia de proceso, memoria RAM y velocidad del disco; la versatilidad y comodidad son esenciales. Un ordenador potente pero ruidoso terminará antes la tarea, pero nos dará tal dolor de cabeza que acabará siendo contraproducente. Para el software que usaremos debajo se puede considerar un ordenador Apple o incluso estaciones de trabajo más exóticas; sin embargo, los ordenadores x86 (procesadores compatibles con Intel o PCs) o incluso x86_64 (AMD64) tienen como ventaja la abundancia de componentes, que nos proporciona una gran versatilidad.
En cuanto al formato, podemos pensar en ordenadores de torre o sobremesa, mini-pcs, barebones y portátiles. La primera opción suele ser ruidosa y debe considerarse con cuidado. Nosotros mismos usamos barebones, que significa "huesos pelados": ordenadores que vienen sin procesador, memoria ni disco duro, lo que nos permite configurarlos a nuestro gusto y actualizarlos cuando sea necesario. Los mini-pcs, siempre y cuando tengan la potencia necesaria, son buena opción. Los portátiles suelen estar demasiado cerrados: cualquier ampliación se vuelve dificultosa o directamente imposible.
Los procesadores AMD64 de sobremesa valen la pena: son más baratos que los Pentium 4 de Intel, y dan mayor rendimiento en aplicaciones de proceso intensivo, como tratamiento de vídeo o generación de imágenes 3D. Los nuevos Intel Core Duo, sin embargo, son en la práctica dos procesadores en uno y pueden dar mejor resultado. En cuanto a memoria RAM y disco duro, lo más práctico es empezar modestamente y actualizar el equipo si se queda corto.
Hay que tener cuidado con los componentes integrados en placa; la tarjeta de sonido sobre todo es delicada, y vale la pena gastarse 30 ¤ en una con S/PDIF (estándar de transmisión digital entre equipos); de esta manera no se perderá calidad en la captura de sonido. Es importante disponer de FireWire (también llamado IEEE 1394, i.Link o conector DV), aparte del inevitable USB.
En Terroralia, las primeras versiones de las imágenes 3D y los primeros premontajes se hicieron usando un Asus Pundit, con su Pentium 4 a 2.4 GHz. Aunque no era mala máquina, emitía un zumbido insoportable en cuanto la CPU tenía cierta carga. En mayo de 2005 decidimos actualizarnos a un procesador AMD64 a 2 GHz; dentro de un AOpen XC Cube EZ482, muy silencioso. Aunque el uso de CPU se mantuviera al 100% durante horas (y creedme que lo ha estado) el ruido apenas aumentaba. Las especificaciones iniciales eran modestas: 512 MB de RAM y 160 GB de disco duro; posteriormente ampliamos la memoria a 1.5 GB y añadimos un disco duro externo de otros 160 GB, que puede verse a la derecha. La estación de trabajo final es muy potente y versátil, además de silenciosa. También se dispone de un mac mini para tareas auxiliares: reproducción con el proyector o transferencia de fotos desde la cámara.
Software Libre
El software libre es software que se distribuye con código fuente, que puede modificarse a placer y distribuir las modificaciones, y que normalmente se consigue gratuitamente de internet. No se trata de una libertad teórica o de una lucha idealista; es un beneficio práctico que se nota cada vez que un programa muestra sus limitaciones. A veces un cambio de una línea nos ahorra días de trabajo; otras veces un pequeño desarrollo mejora espectacularmente el resultado final. Pero lo mejor es que otros usuarios también pueden inspeccionar el código y distribuir sus modificaciones, o incluso convertirse en desarrolladores; sin ir más lejos, la versión de Cinelerra que usaremos se distribuye y mantiene por un grupo de usuarios.
Estas ventajas prácticas van mucho más allá del precio o de si tal programa tiene tal o cual prestación: nos permiten hacernos con nuestras herramientas de trabajo y modificarlas según lo necesitemos. Sin embargo, a veces hay que usar software propietario, y tampoco hay que darle muchas vueltas al asunto. Sí recomendamos usar software libre siempre que se pueda.
El software usado en la creación de Terroralia es todo software libre, con mínimas excepciones (como el sistema operativo Mac OS X que usa el mac mini). Cualquier error de manejo de los programas es achacable al operador, no al software en sí.
Sistema Operativo
Tras la charla de arriba, seguro que queda bastante claro que recomendaremos usar un sistema operativo libre; la mejor elección por variedad de opciones y rendimiento es GNU/Linux (Linux para los amigos). Sólo nos queda elegir distribución. Siempre que se pueda es recomendable usar una distribución orientada a usuarios, es decir amigable; Ubuntu y OpenSUSE son buenas opciones para gente con o sin experiencia. Otras distros como Debian o Gentoo permiten más control, a costa de requerir más configuración. A día de hoy Mandriva no es tan buena opción como en otros tiempos. Si nuestro procesador es un AMD de 64 bits intentaremos usar una distro de 64 bits; en ciertos casos puede dar problemas de compatibilidad, pero la potencia adicional vale la pena.
Dentro de una "distro" el software viene en unidades llamadas "paquetes", que contienen uno o más programas (a veces se trata de librerías requeridas por otros programas). Además del software empaquetado probablemente necesitaremos compilar varias herramientas por nuestra cuenta, por lo que conviene instalar un entorno de desarrollo completo: programación + enlazado para diversos lenguajes. Las propias distros traen la opción de instalar grupos de software; busca en la documentación cómo instalar los paquetes de desarrollo. Para compilarse uno mismo los programas basta con bajarse el código fuente y ejecutar los conocidos comandos Unix:
$ ./configure
$ make
# make install
el último de los cuales debe ejecutarse como root.
Ubuntu trae numerosos paquetes en la sección Universe; a veces se pueden usar los paquetes de Debian. Si te decides por OpenSUSE, la versión 10.0 viene casi pelada: la distribución no trae nada para reproducir MP3, ni DivX, ni siquiera DVDs... sin duda por problemas legales como patentes de software (en Estados Unidos). Por suerte existen los enlaces de Packman para Linux. Este buen hombre se dedica a empaquetar software que no está presente en la distribución, o incluso que trae deshabilitadas ciertas funciones. Es imprescindible para cualquiera que quiera usar OpenSUSE para audio o vídeo. En adelante usaremos OpenSUSE para el tutorial.
Creación de Vídeo
Las fuentes de vídeo que consideraremos son: secuencias tomadas con la cámara miniDV; imágenes 3D generadas por ordenador; y títulos.
Captura DV
Para capturar imágenes de una cámara digital, el interfaz estándar usado es el conector FireWire. Hay varias opciones de software; aquí usaremos Kino. La versión que viene con SUSE está compilada sin soporte para QuickTime; por desgracia, parece que Cinelerra no traga los ficheros DV en bruto. Así que tendremos que compilar nuestra propia versión a partir de los fuentes. La nueva versión, la 0.8.0, tenía hasta hace poco algunos problemas de compilación restantes en AMD64, así que usaremos la 0.7.5. Aunque es teóricamente posible, no hemos intentado capturar el vídeo con Cinelerra.
Kino, lógicamente, requiere varios módulos del kernel para usar el interfaz FireWire (alias IEEE 1394); y por algún motivo SUSE no los carga automáticamente. Se trata de raw1394, ohci1394 y ieee1394. Si tenemos este problema la barra de estado nos avisará; un simple
# modprobe raw1394
basta para resolver la cuestión. En las preferencias de captura de Kino seleccionaremos "QuickTime DV", y en las de "IEEE 1394", el driver /dev/raw1394. Tras seleccionar "Captura" en los botones de la derecha, daremos un nombre al fichero de salida; el programa se encargará de añadir un número de secuencia y la extensión apropiada. Si se activa el botón de "AV/C", podremos manejar la cámara desde el ordenador.
Hay que tener en cuenta que el vídeo en formato DV ocupa muchísimo espacio: unos 3.7 megabytes por segundo. Sólo los 14 minutos del montaje final de Terroralia ocupan más de 3 GB, y os aseguramos que se grabó mucho más material. Así que aseguraos de tener espacio disponible en el disco antes de empezar la captura. En nuestra experiencia Kino es bastante inestable, pero si se usa sólo para captura de vídeo resulta cómodo.
Imágenes 3D
Si queremos añadir imágenes de síntesis a nuestro corto, tenemos que elegir un programa de modelado y otro de generación. En nuestro caso optamos por generar las imágenes 3D con POV-Ray, lamentablemente no software libre. Es bastante potente aunque resulta un poco lento. Sólo por este programa ya vale la pena usar una distribución de 64 bits: el test estándar POVRay Benchmark pasó de tardar 42 minutos en el P4 a 25 minutos en el AMD64 con Gentoo (28 con SUSE). Hay muchísimos tutoriales muy buenos en la web y la propia documentación online es excelente, así que no nos explayaremos mucho.
Para crear los modelos usamos KPovModeler, bastante básico. No soporta por ejemplo animaciones. Probablemente haya mejores programas por ahí; hemos oído grandes cosas de Blender, pero no hemos llegado a usarlo. Las animaciones se hicieron todas a mano (y a ojo).
Títulos
La tituladora de Cinelerra (efecto title) es bastante elemental: sólo permite poner títulos en movimiento lineal o quietos. Nosotros queremos algo más complejo, como los carteles al inicio de cada escena de Terroralia: en este caso se quiere que los carteles entren desde la izquierda, se queden quietos un rato y luego salgan por la derecha. Con Cinelerra tendríamos que usar tres efectos de título distintos, sincronizados entre sí. A continuación exploraremos cómo programar nuestros propios scripts en Python.
Alto, sabemos lo que estáis pensando: "yo quiero editar vídeo, no programar". Bueno, una cosa no quita la otra. En cualquier caso, aquí os ofreceremos unos scripts (programitas simplificados) ya hechos que podéis adaptar fácilmente a vuestras necesidades. Python es un lenguaje muy claro, donde es fácil expresar lo que se quiere; y además nuestro enfoque implica programar lo menos posible. El script ni siquiera crea los letreros; toma una imagen ya hecha, y lo único que hace es moverla por la pantalla. Originalmente se hizo así por una limitación de las librerías de Python, que no tratan correctamente los acentos, pero el proceso resultante es muy versátil ya que puede contener colores o imágenes al gusto.
Se quiere crear un cartel de inicio de escena, que se mueva de izquierda a derecha y permanezca un rato en pantalla. Se creará la imagen deseada como se desee; recomendamos usar GIMP, un programa de edición de imágenes libre (al estilo de Photoshop), pero cualquier programa vale. Generaremos una imagen PNG del mismo tamaño que el formato destino, en nuestro caso 720x432; el fondo será transparente, y la figura contendrá lo que queramos mostrar en pantalla. Luego colocaremos la imagen resultante en un directorio (el equivalente Unix de las carpetas) aparte, y correremos el script en ese directorio. Pueden colocarse tantas imágenes como se desee; el proceso se repetirá con cada una.
El script que hace el trabajo está a vuestra disposición: generate-h.py. En apenas 80 líneas toma la imagen original y genera una secuencia de imágenes con el movimiento requerido. La librería PIL permite tratar imágenes en formato PNG, con transparencias y otros efectos. Para simular el movimiento de entrada y de salida, usamos un efecto a medida blend: se trata de pegar varias versiones de la misma imagen suavizadas y desplazadas entre sí. (Curiosamente, es necesario mezclar 10 imágenes suavizadas al 50% y desplazadas un píxel entre sí para dar la impresión correcta; aunque la distancia entre imágenes sea de 20 píxels.) Para la imagen estática, repetimos 75 veces (3 segundos) la imagen estática original. El resultado está en formato PNGS, que se puede importar directamente en Cinelerra. Para cada imagen con nombre *.png, crea un directorio que contiene las imágenes y un fichero *.pngs con la secuencia.
El siguiente script, generate-v.py, hace el mismo trabajo pero esta vez en vertical; se usó para los títulos de los actores del final.
Créditos
Por fin, si queremos generar los créditos del final del corto, usaremos una versión simplificada con movimiento lineal. ¿No es esto mismo lo que hace la tituladora de Cinelerra? El script es más versátil, porque nos permite mostrar colores e imágenes en los créditos. Para ello crearemos una imagen PNG alargada con el texto que queramos; y lo haremos con un formato que nos permitirá reutilizar la información para la web: HTML.
Crearemos una página web con los créditos que necesitemos; en nuestro caso partimos de la versión online, pero quitando los actores que saldrán en escena aparte. Usaremos además una CSS diferente: queremos el clásico fondo negro con el texto blanco, salvo ciertos elementos (enlaces y software) que queremos mostrar en colores pastel. (Podéis descargar la página HTML y la hoja CSS para usarlas como punto de partida.) Luego abrimos la página en el navegador Firefox. Iremos haciendo scroll y realizando varias capturas de pantalla con KSnapshot, o algún programa similar que nos permita capturar la imagen en pantalla, el mismo GIMP. Es importante solapar las capturas, de forma que tengan siempre algún trozo en común.
El siguiente paso es crear en GIMP un fichero de al menos el tamaño necesario, calculado sumando las dimensiones de las pantallas capturadas. (En Terroralia, por tener una referencia, se necesitaron 3 capturas y el tamaño final de los créditos era de 720x3000 pixels.) La opción "tamaño del lienzo" nos permitirá cambiar las dimensiones de la imagen completa si no acertamos a la primera. Al abrir las capturas y pegarlas en la principal, las encajaremos de forma que nos permitan obtener la imagen PNG con los créditos completos. Antes de continuar podemos retocarla a nuestro gusto — añadiendo imágenes o moviendo las partes para reordenarlas. Una vez que tenemos la imagen PNG completa, la renombraremos como scroll.png y ejecutaremos el script generate-scroll.py en ese directorio. Esto nos creará un directorio scroll con todas las imágenes, y un fichero scroll.pngs con la secuencia importable directamente en Cinelerra.
La velocidad (en pixels por segundo) viene expresada en la variable rate. En principio se puede cambiar, pero un posible problema con el script es que tiene que ser un entero; no está preparado para manejar desplazamientos fraccionales entre una imagen y la siguiente. La ventaja es que el movimiento es bastante fluido tal y como está.
Para editar ficheros de texto, por cierto, usamos KWrite. No hace falta decir a estas alturas que preferimos KDE como entorno de trabajo (es por cierto el escritorio por defecto de OpenSUSE).
Copia de Seguridad
Ya tienes todos los ficheros fuente en tu máquina: capturas DV, capturas fijas, títulos... Seguramente has oído ya hasta la saciedad la importancia de hacer backups o copias de seguridad. Bueno, pues lo has oído poco. Si no lo has hecho ya, párate y piensa tu estrategia de respaldo. ¿Copia en CDs, o en DVDs? ¿Un disco duro en mirror? ¿Copias a un servidor remoto? ¿Soportes más exóticos, como cinta o magneto-ópticos? Elige varios. Recuerda que los discos ópticos no son muy fiables ya de por sí; no racanees comprando DVDs a 20 céntimos, y almacénalos en un sitio oscuro y seco. Asegúrate de que el material de tu corto sobrevive a una pequeña catástrofe como una gotera del vecino, porque es irreemplazable.
Salida de Vídeo
Pasemos a ver cómo generar el vídeo a partir de los fuentes. Como ya vimos en el cómo se hizo, el montaje final de Terroralia vídeo se realizó con Cinelerra, así que aquí no nos recrearemos demasiado. Veremos después la generación del vídeo en los formatos deseados.
Montaje
Cinelerra es un ejemplo claro de las ventajas del software libre. El desarrollador original, Heroine Virtual Ltd., vio cómo los usuarios adoptaban su programa e incluso tomaban el dominio www.cinelerra.org para sus propios fines. En seguida se montaron un servidor de SVN para distribuir el código, una lista de correo y un foro con un manual; bajo el nombre "Cinelerra-CV", y para irritación de los creadores. Sin embargo, con el tiempo vieron cómo el programa (inicialmente muy inestable) mejoraba a ojos vistas gracias a la dedicación de los usuarios. Hoy día incluso ellos mismos recomiendan para usuarios finales la versión Cinelerra-CV.
Así pues ésta será la versión que usemos. Es necesario bajársela del SVN y compilarla para tener las últimas correcciones; las instrucciones son bastante claras. No os fiéis de la versión empaquetada aunque esté disponible para vuestra distro favorita; diariamente se suben cambios importantes. Sin embargo sí debéis obtener de vuestra distro las librerías de desarrollo necesarias. El uso está explicado en el manual ya enlazado y en Secrets of Cinelerra; hay muchos otros tutoriales en internet. Sólo os recomendamos generar las escenas por separado.
Generación sin Compresión
Una vez que se tiene montado el vídeo, es necesario generarlo en el formato o los formatos deseados (AVI, QuickTime MOV, MPEG), compresión de vídeo (DV, MPEG, MPEG-2, MPEG-4, H.264...) y compresión de audio... Por ejemplo: podemos obtener el resultado directamente desde Cinelerra en formato DVD, al menos teóricamente. En nuestro caso hemos montado cada escena por separado, así que obtendríamos 13 ficheros distintos que luego habría que juntar.
Sin embargo, la generación desde Cinelerra tarda demasiado: del orden de hora y media en total, y la generación en batch (de varios ficheros en serie) no funciona correctamente. Además seguiríamos teniendo un fichero por escena. Así que optamos por generar el vídeo sin compresión primero, unir luego las escenas, y por último convertirlo a cada uno de los formatos deseados con otros programas. Los tiempos de generación a partir de la versión sin compresión son de unos pocos minutos, de forma que podemos experimentar para conseguir la mejor calidad. El formato sin compresión elegido, por su maleabilidad, es "YUV4MPEG Stream": consiste en un flujo en espacio de color YUV, el mismo usado normalmente en vídeo digital. Para generarlo seleccionamos en ese formato sólo vídeo, elegimos fichero de salida y especificamos que no queremos usar una pipa (Use pipe no seleccionado).
Al generar (render) cada escena, obtendremos un fichero con el vídeo; tras una cabecera mínima siguen los datos en bruto. El formato ocupa un montón de espacio, unos 700 MB (la capacidad estándar de un CD) por cada minuto: 9.2 GB para nuestros 14 minutos de corto. Consideraremos en adelante que hemos generado, digamos, 13 escenas, llamadas escena00 a escena12.
Entrelazado
El vídeo digital está lleno de trampas para incautos. Una de las más flagrantes es el entrelazado: un molestísimo efecto heredado de los primeros tiempos de la televisión. El mecanismo de los primeros televisores consistía en un haz de electrones que barría la pantalla 625 veces (en el formato PAL, 525 en el norteamericano NTSC). El problema era la tecnología no daba todavía para que el haz recorriera todas las 625 líneas, 50 veces por segundo; había que o bien reducir la tasa a 25 imágenes por segundo, lo que daba lugar a un molesto parpadeo, o bien reducir el número de líneas y por tanto la resolución. Se optó por una solución intermedia: cada imagen estaría dividida en dos campos, que alternativamente contendrían las líneas pares e impares; se mostrarían 50 campos por segundo. El primer campo (líneas impares) contiene 313 líneas, el segundo 312. Para más información ver la explicación de la wikipedia (en inglés).
En estos tiempos de monitores digitales, TFTs y DVDs, el entrelazado ha quedado más bien obsoleto; lo contrario se llama "escaneado progresivo", usado en monitores de ordenador, pantallas TFT... y por supuesto en el cine. Sin embargo, las cámaras domésticas miniDV siguen realizando la captura con entrelazado. Es necesario eliminarlo antes de generar las imágenes destinadas al ordenador o incluso al DVD, aunque es posible generar DVDs entrelazados también.
Es posible usar el efecto de desentrelazado que viene con Cinelerra. El problema es que hay que elegir entre varias opciones: duplicar campo, promediar campo (average)...; con umbral o sin umbral. La opción de duplicar campo pierde información, ya que sólo se aprovecha un campo de cada dos; la de promediar es igual, pero suavizando el campo restante. En ambos casos se añade un umbral, para que el desentrelazado se realice sólo cuando hay suficiente distancia entre ambos campos. Esto mejora un poco la resolución en imágenes cuasi-estáticas, pero hace que el entrelazado sea perceptible. Además se pierde información en movimiento y se añade cierto coste computacional a la generación: para cada imagen hay que comprobar la diferencia para calcular si se rebasa el umbral.
En este punto entran en escena las herramientas de tratamiento de vídeo digital MJPEG Tools. El comando yuvdeinterlace permite hacer el desentrelazado temporal, dividiendo los campos en imágenes; se obtiene así un flujo de 50 imágenes por segundo, que al convertir a 25 imágenes por segundo contiene la fusión de dos imágenes. El efecto resultante es un desentrelazado suave y sin pérdida de resolución. Desde Cinelerra debe seleccionarse formato "YUV4MPEG Stream", marcar Use pipe, y especificar el comando
yuvdeinterlace -s0 > %
suponiendo que el entrelazado comience con campos impares; sustituir -s0 por -s1 en caso contrario. (Si se elige mal se verán unos molestos artefactos en el resultado.) Cinelerra creará una pipa Unix, que conecta su salida con la entrada de yuvdeinterlace. El resultado se exporta al fichero %, que será lo que se indique como fichero de salida. El resultado puede verse con MPlayer o xine sin problemas. Alternativamente, podemos tomar los ficheros generados como flujos YUV en el paso anterior y transformarlos sobre la marcha, aunque ocuparemos el doble de espacio de disco. El siguiente comando transforma escena00 a deint00 eliminando el entrelazado; como veis la pipa la añadimos aquí explícitamente.
cat escena00 | yuvdeinterlace -s0 > deint00
Radio de Aspecto
Otra trampa para incautos habitual es el radio de aspecto (o aspect ratio). En esencia se trata de la relación entre el tamaño de la imagen en horizontal y en vertical. Así, un radio de aspecto de 4/3 quiere decir que por cada cuatro pixels o puntos de la imagen en horizontal, tendremos 3 puntos en vertical, ¿no es así? ¡Pues no! En vídeo digital, los pixels no son necesariamente cuadrados.
Así, el formato DV tiene 720x576 pixels, y 720/576 nos da 1,25; sin embargo, su relación de aspecto es 4/3, que es 1,33. Esto quiere decir que en este formato los puntos de la imagen miden más en horizontal que en vertical. A la hora de elegir formato de salida, es importante elegir la relación de aspecto adecuada (en nuestro caso 16/9, típica de los televisores de cine domésticos); y además el tamaño de salida en puntos. En Terroralia elegimos unas dimensiones de salida de 720x432, con radio 16/9; aunque no es necesariamente una buena idea, nuestros puntos sí son cuadrados.
Unión de secuencias
Si habéis seguido el tutorial y montado cada escena por separado, tras exportar a YUV4MPEG tenemos trece ficheros con trece flujos, uno por cada escena. ¿Cómo unirlas todas y obtener un solo fichero? La respuesta es bastante manual; hay que usar un script de Bash similar a éste. El truco básico consiste en usar una función como skip1:
skip1()
{
read junk
cat
return 0
}
que elimina la cabecera de cada flujo YUV, excepto la primera. De nuevo, cuidado con el tamaño del flujo resultante; para Terroralia era de más de 9 GB. Otra opción es enlazar este paso del proceso con los siguientes, que de hecho fue lo que nosotros hicimos. Aunque es un poco más difícil de seguir, las pipas de Unix nos permiten eliminar parte de las escrituras a disco y por tanto acelerar el proceso.
Compresión MPEG-1 y MPEG-2
Las herramientas MJPEG Tools entienden el flujo resultante de esta operación, así que es conveniente usarlas para procesar a MPEG 1 y 2. En primer lugar conviene eliminar el ruido de la imagen y reducirla al mismo tiempo. Luego usaremos mpeg2enc para la generación de MPEG; cambiando los parámetros según la variante deseada, 1 o 2. Si el fichero que contiene la imagen se llama flujoyuv, el comando será:
cat flujoyuv | yuvdenoise | yuvscaler -m BICUBIC -O SIZE_320x192 | mpeg2enc -f 0 -q 14 -a 1 -V 230 -o small.m2v
con lo que obtenemos un vídeo de 320x192 (SIZE_320x192) con formato MPEG-1 (-f 0) con cuantización 14 (-q 14) en el fichero de salida small.m2v. El parámetro de cuantización decide la calidad, cuanto más bajo mejor calidad; 14 da una calidad un poco pobre, es posible que te compense reducirlo a 12 o incluso a 10. En cualquier caso es casi imprescindible experimentar con los parámetros. Para MPEG-2 el comando es muy parecido:
cat flujoyuv | yuvdenoise | yuvscaler -m BICUBIC -O SIZE_320x192 | mpeg2enc -f 3 -q 14 -a 1 -V 230 -o small.m2v
Compresión de Vídeo
La compresión de vídeo es todo un arte. No hay un conjunto de parámetros que dé buenos resultados siempre; nuestro objetivo es arañar hasta el último bit manteniendo la mayor calidad posible. Tampoco hay un formato definitivo; el medio impone ciertos compromisos de tamaño, compatibilidad y calidad. Lo que sigue es un breve estudio teórico; se explican ciertos parámetros para entender qué se está haciendo, y de paso se dan algunas directrices para optimizar la compresión. Al terminar expondremos los formatos recomendados para la distribución según el canal, y el tamaño aproximado de los ficheros que resultan en cada caso.
Formatos de Compresión
Desde el primitivo MPEG-1, compresión de imágenes con muy pocas opciones, hasta el MPEG-4 en boga hoy en día; pasando por el MPEG-2 que se usa en los DVDs y en muchos canales por satélite; y sus miles de variantes como DivX, XviD; el Windows Media Video de Microsoft; el Ogg Theora de GNU... Hay muchas compresiones de vídeo disponibles. A menudo hay que equilibrar compatibilidad y calidad; el WMV (versión 4) no se puede reproducir en Linux, mientras que para ver XviD en Windows hace falta un programa específico, VLC, disponible fácilmente y de manera legal. (También se pueden usar los códecs, codificadores / decodificadores, para reproductores propietarios.)
Los formatos de compresión van mejorando constantemente; el MPEG-4, DivX, XviD y similares dan mucho mejor resultado que el MPEG-2. El formato MPEG-2 proporciona a su vez mejor calidad que el MPEG-1, ya que tiene calidad de vídeo variable, mejores algoritmos de detección de movimiento, etc. Sin embargo, no es igual de compatible; el software para reproducirlo no viene por defecto ni con Windows ni con Mac OS X. Sí basta con VLC para verlo; pero ya puestos podríamos usar MPEG-4, que se ve bastante mejor al mismo tamaño de fichero. No recomendamos usar ni WMV ni Theora en este momento, ya que no tienen soporte universal (en nuestro caso Windows, Linux y Mac OS X).
Compresión y Dimensiones
El tamaño final del fichero dependerá del flujo de salida en kilobits por segundo (kbit/s) y la longitud del vídeo a comprimir. ¿Qué es razonable esperar de un cierto flujo de salida? La respuesta depende de muchos factores; entre los más importantes están las dimensiones del vídeo. Si se compara con el formato de imágenes estáticas JPEG, veremos claramente cómo las dimensiones de la imagen pueden afectar al resultado. Se muestra a la derecha la imagen original a comprimir, guardada con un parámetro de calidad 80% en GIMP.
Si intentamos comprimir la imagen más allá de lo que es razonable (parámetro de calidad 35%), los artefactos (efectos no deseados) de la compresión comienzan a ser exagerados y la imagen pierde calidad muy rápidamente. Los típicos cuadrados de 8x8 píxels que se usan en la compresión JPEG se ven claramente, y la información de color se vuelve también muy burda.
Sin embargo, si reducimos la imagen a la cuarta parte (mitad de alto y mitad de ancho), la imagen perderá obviamente resolución; pero el resultado de la compresión es mejor al mismo tamaño en Kbytes, y podremos de nuevo aumentar el parámetro de calidad hasta el 80%. En contra de lo que puede parecer intuitivamente, para una misma compresión no es siempre mejor elegir el tamaño de imagen mayor; a veces compensa reducir las dimensiones. Al mostrar el resultado en una pantalla grande normalmente habrá que reescarlarla de todas formas, lo que normalmente se hace suavizando los bordes entre puntos. Pues bien, en formatos de vídeo el resultado es parecido, aunque hay una componente nueva: la compresión temporal.
Compresión y Tiempo
La reducción de tamaño de un vídeo digital se consigue no sólo comprimiendo cada imagen individual; si se observa el tamaño final se ve que se comprime incluso más en proporción que una imagen individual JPEG. Una técnica esencial es la compresión temporal: a partir de una cierta imagen clave (o keyframe) las imágenes siguientes se calculan por su diferencia con la anterior; la información que contiene esta diferencia es bastante menor que la imagen original, por lo que se comprime también mejor. El número de imágenes clave depende del proceso de generación del vídeo, y es esencial para que el vídeo mantenga una buena relación entre tamaño y calidad; también para que se reproduzca correctamente en ordenadores con poca potencia y DVDs domésticos.
La compresión temporal llega a niveles bastante sofisticados; por ejemplo en MPEG se detecta el movimiento en cualquier dimensión, y se especifica que cierto trozo de imagen es el resultado de desplazar una imagen anterior. El algoritmo para detectar este movimiento puede variar según el programa que se use para la codificación; y cuanto más fiablemente se detecte el movimiento, menos ocupará el resultado final y mejor se verá. Por supuesto, cuanto menos movimiento tengamos, mejor funcionará la compresión temporal.
Ruido
El elemento que más dificulta la compresión de vídeo es el ruido. En esencia se trata de información no deseada, que enmascara la información útil y hace que se tropiecen los algoritmos de compresión: éstos funcionan mejor cuanto más suave es la imagen original. Por fortuna hay medios de eliminarlo; a veces suavizan de más las imágenes, pero la mejora de calidad y tamaño a menudo vale la pena.
Es por lo tanto importante eliminar todo lo posible aunque dé una cierta blandura a las imágenes. Aquí hemos usado sólo yuvdenoise, pero hay muchas otras herramientas como yuvmedianfilter que eliminan más ruido aún. Es útil conocer sus efectos y usarlas cuando sea necesario.
Formatos Elegidos
Tomaremos como base el número de megabytes (MB) por minuto que ocupa el vídeo solo, comprimido de distintas maneras según el destino y en algunos casos reescalado. Sin comprimir la imagen ocupa unos 670 MB a 720x432. Al reducirlo a 320x192, cambiando ligeramente la relación de aspecto, el tamaño del flujo sin comprimir es ya de unos 140 MB / minuto. Generaremos una versión MPEG-1 a este tamaño para máxima compatibilidad; una calidad decente exige 3 MB por minuto. (Esta versión quedó obsoleta una vez que el corto estuvo disponible en video.google.com.) También es interesante ofrecer una versión MPEG-4 al mismo tamaño, para espectadores con más conocimientos y exigencias; sale a 2.4 MB aprox. Para la red eDonkey 2000 / eMule generamos una versión de alta calidad al tamaño original de 720x432, usando el mismo MPEG-4; ocupa 7.4 MB / minuto. Por último necesitamos una versión para DVD (MPEG-2); ésta ocupa casi 35 MB por minuto.
Montaje de Audio
Llegados a este punto tenemos que confesar un error garrafal por nuestra parte. La edición de todo el audio se hizo con Audacity; cuando retrospectivamente habríamos ahorrado bastante trabajo usando el más sofisticado Ardour, como veremos.
Edición Destructiva
Audacity se basa en edición destructiva. Cada cambio que se realiza sobre el sonido se ejecuta de inmediato, y si no se deshace rápidamente queda en el fichero para siempre. Si una vez terminado el procesado del sonido nos damos cuenta de que faltaba un trozo esencial y que es imposible añadirlo a posteriori, tendremos que volver a empezar desde cero. Y lo mismo si hemos aplicado un efecto poco apropiado al principio de la edición.
El citado Ardour, sin embargo, usa edición no destructiva (non-destructive edition), igual que Cinelerra para vídeo. Esto significa que los efectos no se aplican realmente sobre el sonido; se guardan los archivos fuente por un lado y la lista de efectos por otro. Para escuchar cómo queda se aplican los efectos en tiempo real. Una vez listo se genera (render) el resultado final, que se guarda en un nuevo fichero. En cualquier momento se puede eliminar un efecto, apilar uno nuevo (sin temor a pérdidas intermedias), o volver al sonido original.
Un problema posible es que la generación final puede tardar demasiado. Con Cinelerra perdimos la posibilidad de ver el resultado en tiempo real poco después de terminar el premontaje, así que a menudo teníamos que generar la escena completa para ver cómo quedaba cierto efecto. El audio suele ser, sin embargo, menos costoso que el vídeo; con una CPU potente podremos aplicar muchos efectos en tiempo real. En definitiva, usad un programa de edición no destructiva.
Proceso Intermedio
A nosotros fue la complejidad del interfaz lo que realmente nos echó para atrás; el interfaz limpio de Audacity nos ganó desde el primer momento, dado que ya lo usábamos para capturar el sonido desde el minidisc.
Intentad usar un formato de la suficiente resolución para los ficheros intermedios de audio. El oído puede llegar a distinguir unos 16 bits; por lo tanto, cualquier reducción de volumen (amplificación negativa) seguida de un aumento (amplificación positiva) podrá resultar en pérdida de calidad, que se traduce en ruido. Para poder transformar el sonido con confianza recomendamos usar el formato de 32 bits en coma flotante.
La producción de audio es prácticamente un arte; se trata de mantener siempre un nivel cercano al máximo, para aprovechar el rango dinámico (aún en pasajes más silenciosos), sin pasarse nunca del límite. En edición destructiva, rebasar el límite quiere decir introducir artefactos (el término técnico es clipping) que distorsionan la señal. El programa de efectos Postfish tiene la posibilidad de hacer declipping, que supuestamente elimina esta distorsión; lo usamos en algunos casos para fuentes mal grabadas, y puede hacer el apaño si el sonido ha sido mal grabado. Durante la edición es lógicamente mejor mantenerse dentro del límite.
Sincronización
Al sincronizar los efectos de sonido con el vídeo, o las propias voces si están grabadas aparte, hay que posicionar el audio con mucha precisión para que no se note desincronizado. Sin embargo, esta precisión no es fija; no es igual para música, efectos y voces.
Si se trata de efectos bruscos, como disparos o golpes, un retraso de 100 ms (cien milisegundos, o sea una décima de segundo) puede notarse demasiado. Para música, la sincronización entra en juego cuando se pegan dos trozos distintos de la misma canción; en este caso incluso un corte de 50 ms puede estropear el ritmo. Las voces son donde más tolerancia se permite; hasta 150 o 200 ms de retraso no son realmente perceptibles. Intenta mantenerte más cerca de los 150 ms, por si acaso.
Salida de Audio
Con el sonido ya montado, hay que darle la forma final y generar los formatos adecuados.
Concatenación
Para entremezclarlo con el vídeo, es necesario que el audio esté en un solo archivo: si habéis editado el sonido por escenas, seguramente no tenga la misma duración exacta que el vídeo. Incluso retrasos que duren menos que una imagen (1/25 de segundo, o 40 ms) pueden llegar a ser perceptibles cuando se acumulen tras varias escenas. Así que no basta con usar un programa como SOX para hacer concatenación automática. Es necesario medir lo que dura el vídeo de cada escena y anotarlo en un papel; luego con Audacity importaremos el sonido de cada escena, recortándolo o alargándolo según sea necesario. Tras concatenar todas las escenas, generaremos un único fichero WAV del tamaño necesario.
Compresión
El último paso del audio es generar los ficheros para la distribución. A partir del WAV con el sonido completo crearemos el MP3, que ofrece calidad suficiente para la distribución por internet, y el MP2 que se usa en los DVDs. Para MP3 (o MPEG Audio Layer III) usaremos LAME, un excelente compresor libre, y el comando:
lame -h -V 4 -m j completo.wav completo.mp3
En 2 minutos y 35 segundos comprime los 14 minutos de sonido a un MP3 de calidad variable (promedio 128 kbit/s).
El sonido para el DVD debe estar en MP2 (técnicamente MPEG Audio Layer II), o bien en el formato más avanzado AC3. Por ahora optamos por el primero, que debería darnos calidad suficiente; más tarde veremos cómo generar AC3. Usaremos tooLAME, un juego de palabras con el nombre del compresor MP3. [LAME son siglas recursivas al estilo GNU que significan LAME Ain't an Mp3 Encoder, o"LAME no es un codificador MP3". Al mismo tiempo, la palabra lame significa "cojo", pero también "pobre, cutre". tooLAME genera MP2, una versión anterior al MP3. Too lame significaría, apropiadamente, "demasiado cutre".] El comando es:
toolame -m j completo.wav completo.mp2
Esta vez sólo tardamos 25 segundos en obtener un MP2 a 192 kbit/s. Al contrario que el MP3 no usamos calidad variable (variable bitrate), porque puede dar problemas de compatibilidad.
Distribución Final
Una vez que se tienen los ficheros de vídeo y de audio por separado, hay que realizar la mezcla (el término técnico es multiplexado) para generar un único archivo a partir de ellos; y generar los ficheros en los formatos finales para su distribución.
La figura de la derecha nos permitirá seguir los caminos de edición visualmente.
Formatos Contenedores
Hay varios formatos que permiten contener audio y vídeo. El formato MPEG está pensado para que pueda contener varios flujos (streams) a la vez; es muy estándar, sobre todo en su versión 1. El formato MPEG-2 está bastante más restringido, se usa en DVDs; y el MPEG-4 no suele usarse como contenedor. El formato AVI de Microsoft significa Audio Video Interleave o "audio vídeo entremezclado"; a pesar de ser muy antiguo, es bastante estándar y ampliable, por lo que es el que usamos para la distribución por internet. También podemos usar el formato MOV de QuickTime, del que hay una versión para Linux; pero nos obliga a instalar las librerías y sobre todo el molesto QuickTime Player. Optamos por no usarlo, huyendo igualmente de Real Video, WMV... y otros engendros propietarios.
Generación de ficheros finales
El comando mplex permite mezclar flujos de audio y vídeo en un solo fichero MPEG.
mplex -V -f 8 -o pequenyo2.mpg pequenyo2.m2v completo.mp2
Con FFMPEG obtenemos un MPEG-4, dejando el sonido igual (MP3).
ffmpeg -b 300 -acodec copy -i terroralia.mpg terroralia.avi
Hay que partir lógicamente de un fichero que tenga la máxima calidad posible, en nuestro caso terroralia.mpg se generó independientemente del anterior; es una reducción de tamaño de la versión para DVD. Este terroralia.avi es el archivo final que se cuelga en la web; tiene una tasa de datos de 300 kbit/s (vídeo) + 128 kbit/s (audio), o sea unos 428 kbit/s en total; para 14 minutos nos dará unos 42 MB.
DVD
La generación del DVD no es nada trivial. La versión del vídeo en MPEG-2 que hemos hecho no ayuda realmente más que como fichero intermedio para generar el MPEG-4; y el audio queda mejor en AC3. La generación la hicimos siguiendo esta página, donde Shiznix nos cuenta (en inglés) el proceso del principio al final. Tan sólo tened en cuenta, al usar transcode, que se pueden usar ficheros separados para el audio y el vídeo; y que este último puede ser un flujo YUV4MPEG:
transcode -i video-stream -p audio.wav ...
Así que podemos comenzar el proceso con nuestras versiones sin compresión.
Otros formatos
Posteriormente se sube la versión MPEG-4 del corto a video.google.com, para aumentar la compatibilidad y de paso ahorrar en costes de ancho de banda Es un proceso un poco lento debido a la verificación manual; además el resultado final tiene bastante menos calidad que nuestra versión, pero el resultado puede verse en cuanto empieza la descarga — no es necesario esperar a tenerlo entero. Para subirlo a YouTube hay que tener en cuenta que no soportan el formato panorámico 16:9; tendremos que añadir una franja negra arriba y abajo.
En nuestro caso, una versión de más calidad (a tamaño completo 720x432, de 117 MB) se pone en la red P2P de eDonkey2000 (ed2k). El programa usado, aMule (un clon multiplataforma de eMule) nos da el enlace ed2k para su localización en la red. No todo el mundo se siente cómodo con estas redes; en nuestro caso la opción entre pagar por los costes de la distribución o permitir que los usuarios nos ayuden está clara. Sin embargo, en otros casos puede pensarse que limite la distribución comercial. Personalmente lo dudamos bastante, pero no tenemos especial interés en convencer a nadie.
Agradecimientos
Queremos agradecer a todos los autores de software libre su tiempo y esfuerzo. Y gracias a Felipe Sologuren por su buen ojo: POV-Ray no es, lamentablemente, libre.
Para saber más
Vuelve al montaje. También te invitamos a visitar la página principal de Terroralia y los Créditos online.
© 2005, 2006 Vecinos Productions. Algunos Derechos Reservados.













