Blender Multimedia

Blender Multimedia

por Claudio "malefico" Andaur (the3d_hut@yahoo.com.ar)

Introducción

Blender además de ser un excelente programa de modelado y animación, es también un digno editor de vídeo. Soporta los formatos clásicos AVI y AVIJPG además de permitirnos agregar imágenes estáticas TGA o JPG (muy útil a la hora de hacer nuestros títulos y créditos al final de nuestras animaciones). Una característica muy útil que fue añadida al poco tiempo que el código fue "abierto" es la de añadir, editar y sincronizar pistas de audio con nuestras animaciones.
Sin embargo no es posible aún (al tiempo de escribir estas líneas) renderizar el sonido conjuntamente con el vídeo. Para este último paso es todavía necesario recurrir a software externo.
Tanto para Windows como para Linux existen herramientas GPL, es decir gratuitas y con código fuente abierto, para nuestro deleite. Estas son VirtualDub, que durante mucho tiempo fue freeware para uso no comercial y que recientemente se ha convertido en GPL, para Windows (aunque funciona perfectamente en Linux utilizando Wine), Mplayer (con su excelente codificador Mencoder), Avidemux y Broadcast2000 (ahora Cinelerra), un excelente editor de audio y video gratuito disponible para Linux.
El objetivo final de este tutorial será obtener un vídeo AVI con sonido y codificado con el estándar de compresión de vídeo MPEG4, por supuesto sin desembolsar un peso (ni peseta).

Editores y sus manías

Como dice líneas arriba, Blender es un digno editor de vídeo, pero uno puede llegar a necesitar algo más. Un excelente editor de video y audio que supo ganarse un lugar en el mundo multimedia linux es (o era) Broadcast 2000 y su secuela tecnológica Cinelerra. Este programa de calidad profesional, puede leer y grabar audio WAV, MP3 y vídeo Quicktime con distintos sistemas de compresión (JPG, DV, YUV, etc). Estaba disponible en HeroineWarrior pero su autor lo ha quitado del acceso público para evitar posibles problemas legales. De cualquier manera está aún presente en muchas distribuciones linux hasta la versión "C".
Entonces, para qué me molesto en escribir sobre esto ? Buena pregunta Watson. La razón es que existe una comunidad que siguió desarrollando Broadcast y que además de mantenerlo disponible en la web, hackeó el código original añadiéndole interesantes funcionalidades. La versión que me parece más útil de las que he visto hasta ahora es la Broadcast2000c MF2. El código original y esta versión modificada pueden conseguirse en este sitio. Esta versión modificada permite grabar un vídeo con compresión OpenDivx, además de importar audio OGG Vorbis.
Una opción entonces sería descargar esta versión de Broadcast2000c y compilarla e instalarla como primer paso. La compilación no debería traer problemas a un usuario linux promedio, las fuentes no traen un script de configuración, pero el Makefile está bien hecho y debe funcionar sin problemas (recuerden: 'make' y 'make install' como root). Una vez finalizada la instalación podremos llamar al programa tipeando "bcast" en cualquier terminal.
Sin embargo a nadie recomiendo abrir un AVI recién salido de Blender con este programa, solo conseguirá obtener un centenar de pistas de audio y probablemente algún cuelgue del servidor X. La razón es que Broadcast y sus versiones hackeadas trabajan con archivos de vídeo en formato Quicktime o listas de imágenes JPG. Por ello deberemos convertir nuestros AVI al formato Quicktime, o bien renderizar las animaciones como archivos JPG y generar una lista. Para lo primero la mejor solución es utilizar el excelente programa GMerlin o aún mejor MPlayer que nos permitirá leer el AVI y volver a codificarlo como Quicktime con distintos esquemas de compresión de vídeo como MJPA, JPG y OpenDivX. Si no tenemos ganas de bajar este programa (alrededor de 5MB) y compilarlo, siempre podemos optar por crear una lista JPG.
Figure 1: Renderizando como listas JPG desde Blender
video-tut-05-rendersettings.jpg
Para crear una lista JPG lo que primero debemos hacer es renderizar con Blender nuestra animación como una lista de imágenes JPG. Para ello seleccionaremos en la ventana de render el formato JPG y escribiremos el path donde deseamos guardar las imágenes en la caja correspondiente. Conviene usar un directorio aparte preparado para almacenar las imágenes (frames) de nuestra animación en lugar de un nombre de archivo en nuestro directorio habitual.
Luego haremos click en ANIM y las imágenes se generarán y guardarán en disco con nombres secuenciales (frame0001, 0002, 0003, etc).
Una vez renderizada la secuencia, generaremos una lista JPG en un archivo de texto. Este archivo podemos generarlo manualmente incluyendo los nombres de todos los archivos JPG generados pero lo mejor será abrir una terminal y movernos al directorio donde hayamos guardado las imágenes y tipear "ls > lista.txt" para obtener un archivo con la lista.
Para que Broadcast2000 pueda entender la lista es necesario editar este archivo y añadir las siguientes lineas como encabezado :
JPEGLIST # cualquier comentario despues del caracter '#' 
24.000000 #frame rate usado en Blender 
640 #resolucion en X de la animacion 
480 #resolucion en Y 
(...)
Figure 2: Una lista JPG
video-tut-01.jpg
Y a continuación los nombres de las imágenes. Estos nombres es recomendable tipearlos con el path completo o bien lanzar Broadcast2000 desde el mismo directorio donde se encuentran las imágenes.
Para nuestra comodidad, sobre todo si la animación tiene mas de 100 cuadros, he escrito un par de pequeños scripts para bash TGA2LIST y JPG2LIST, que generarán interactivamente las dichosas listas (formatos TGA o JPG). Para ejecutarlo basta con copiarlo al directorio donde hemos almacenado las imágenes (asegurarse de que no haya otro archivo más en el directorio porque será incluido en la lista, produciendo un bug en Broadcast2000) y descomprimirlo con Gunzip (WinZip tambien funciona) o bien instalarlo en el directorio /usr/bin o /usr/local/bin para acceder desde cualquier directorio.
Una vez que hayamos generado la lista, el archivo JPGLIST.TXT generado por el script o bien el archivo editado manualmente, arrancaremos Broadcast2000 y lo cargaremos desde FILE -> OPEN como si se tratase de una animación. Si todo fue bien, veremos aparecer los cuadros de la animación.
Figure 3: Broadcast2000 en acción
imagenes_video-tut-04.jpg
A partir de aquí añadiremos los sonidos y música en pistas de audio mediante FILE -> APPEND. Como esto no es un curso de Broadcast2000, les recomiendo la documentación incluida en las fuentes para aprender el uso del editor. Una vez concluida nuestra edición de audio, deberemos renderizar las pistas de audio y vídeo juntas eligiendo para este último caso, el sistema de compresión OpenDivx. Esto generará un archivo MOV (el formato Quicktime) con compresión OpenDivX. Claro que esto no es lo mismo que tener un AVI con compresión DivX. Pero se le parece bastante. El último paso será codificar este archivo al formato más popular AVI DivX. Podemos utilizar el GMerlin comentado más arriba o el MEncoder que viene con MPlayer. Este codificador podrá leer el MOV comprimido y recodificarlo como AVI usando los codecs DivX que tengamos instalados en nuestro sistema.

Lo mismo, pero más fácil

Si Broadcast o Cinelerra nos parecen demasiado complicados o nuestro sistema no es lo suficientemente potente para soportarlos, podemos realizar la edición de audio desde el propio Blender. Para esto lo que debemos hacer es abrir una ventana de Editor de Secuencias (SHIFT+F8) y llamar al menú principal con la combinación de teclas SHIFT+A.
Figure 4: El editor de secuencias en acción
video-tut-08-sequencer.jpg
Ahora podremos incluir las pistas de audio y vídeo y manipularlas a nuestro gusto. Por ahora, el único formato de audio soportado es el WAV.
Es posible sincronizar y monitorear el audio activando la opción "SCRUB" en los botones de audio de Blender. Esto lo hace ideal para añadir pistas de doblaje a la animación de personajes. Con esta opción activada simplemente al movernos cuadro a cuadro se irá reproduciendo parcialmente el sonido sincronizado.
Figure 5: Los botones de audio en Blender
video-tut-07-audio.jpg
Una vez concluido el trabajo se debe "renderizar" el audio mediante el botón "MIXDOWN" también presente entre los botones de audio. Esto generará un nuevo WAV que incluye toda nuestra edición de audio sincronizada perfectamente con el vídeo renderizado. Mayor información sobre las posibilidades de audio de Blender se puede consultar la documentación oficial accesible en www.blender.org. Es importante remarcar que la funcionalidad del Editor de Secuencias de Blender puede ser grandemente ampliada mediante el uso de Plugins que pueden descargarse del Repositorio de Plugins para Blender.
El único paso que resta es unir el audio y el vídeo (lo que se conoce como "multiplexado").
En Windows disponemos de VirtualDub que tiene la ventaja de poder leer directamente un AVI tal como sale de Blender, por lo que no será necesario crear la lista como más arriba. Con un poco de suerte aprovechando que ahora es GPL quizás podamos los linuxeros disfrutar de este software nativamente, por ahora podremos usarlo mediante WINE. Simplemente hace falta bajar el ZIP precompilado, descomprimirlo en una carpeta que Wine pueda ver, y ejecutar "wine VirtualDub.exe" en una terminal. Este programa es un excelente editor de vídeo aunque no está tan bien equipado para editar audio como el Broadcast2000.
La codificación se hace desde el mismo VirtualDub si uno tiene los codecs DivX para windows instalados.
Si son unos linuxeros recalcitrantes (como quien escribe estas líneas) y no quieren "rebajarse" a usar Wine, también disponemos de Avidemux.
Figure 6: La interfaz de Avidemux
video-tut-04-avidemux.jpg
Este editor puede leer vídeos AVI con compresión DivX, FFMPEG, OpenDivX, XviD y otros (según la versión). Simplemente cargaremos el vídeo y el audio en AVIDEMUX y re-renderizaremos el conjunto multiplexado.
Una vez más, MEncoder nos permitirá codificar nuestro AVI multiplexado a cualquier formato (incluyendo Quicktime Sorensen) necesario por cualquier aplicación.

Bibliotecas, Codecs y otras rarezas

Si siguieron el texto hasta aquí se darán cuenta que el software que hemos compilado e instalado requiere una cantidad de bibliotecas (o librerías, como quieras llamarlo) bastante importante. En particular, será necesario instalar las bibliotecas Quicktime4Linux, Avifile y los codecs DivX y OpenDivX. MPlayer no requiere Avifile ni Quicktime4Linux por lo que puede llegar a ser una opción más atractiva si decidimos editar directamente en Blender.
Para manejar sonido nuestro sistema debería tener instaladas las bibliotecas Mad (decodificador de audio MPEG), OGG Vorbis, Libsnd (para WAV). También será conveniente contar con SDL (http://www.libsdl.org) y algunas bibliotecas derivadas como SDL_mixer, para algunos reproductores de vídeo en pantalla completa.
Casi todos estos componentes se encuentran en la gran mayoría de las distribuciones Linux modernas, por lo que a lo sumo será necesario actualizarlas.
Espero que esta breve reseña les haya sido útil y no dejen de mostrar sus animaciones cuando las terminen !