29Oct

FFmpeg es una completa herramienta para el procesamiento de audio y video. FFmpeg es desarrollado bajo Linux, pero puede ser usado en la mayoría de los sistemas operativos, incluyendo Windows.
El proyecto está compuesto por varias herramientas:
- ffmpeg es una línea de comandos para convertir un tipo de video a otro. Soporta también grabación y codificación en tiempo real desde una tarjeta de televisión.
- ffserver es un servidor HTTP de streaming multimedia para transmisiones en vivo.
- ffplay es un simple reproductor basado en SDL.
- libavcodec es una librería que contiene todos los de/codificadores de audio y video de FFmpeg. La mayoría de los codecs son desarrollados desde cero para asegurar el mejor rendimiento y para que su código sea fácil de reusar.
- libavformat es una librería que contiene los parsers y generadores para todos los formatos de audio y video comunes.
Instalación
La instalación de FFmpeg es muy sencilla bajo Linux puesto que se encuentra en los repositorios de todas las distribuciones más usadas. Por ejemplo, en Debian basta con ejecutar el siguiente comando para instalarlo:
apt-get install ffmpeg
Si usas Ubuntu te recomiendo que lo instales desde los repositorios de Medibuntu, de tal manera que no tengas problemas con (de)codificadores de formatos privativos.
Ejemplos de uso de ffmpeg
Trabajando con hooks
28Oct
Convertir un avi a mpg
ffmpeg -i entrada.avi salida.mpg
Convertir un mpg a avi
ffmpeg -i entrada.mpg salida.avi
Convertir avi a flv
ffmpeg -i entrada.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320×240 -f flv salida.flv
Convertir un vídeo para verlo en el iPod/iPhone
ffmpeg -i entrada.avi input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320×180 -title X salida.mp4
- Video original: entrada.avi
- Codec de audio: aac
- Bitrate del audio: 128kb/s
- Codec de vídeo: mpeg4
- Bitrate del vídeo: 1200kb/s
- Tamaño del vídeo: 320×180
- Vídeo generado: salida.mp4
Convertir un vídeo para verlo en la PSP
ffmpeg -i entrada.avi -b 300 -s 320×240 -vcodec xvid -ab 32 -ar 24000 -acodec aac salida.mp4
- Video original: entrada.avi
- Codec de audio: aac
- Bitrate del audio: 32kb/s
- Codec de vídeo: xvid
- Bitrate del vídeo: 1200kb/s
- Tamaño del vídeo: 320×180
- Vídeo generado: salida.mp4
Convertir avi a dv
ffmpeg -i entrada.avi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 salida.dv
Convertir avi a mpeg para reproductores de dvd
ffmpeg -i entrada.avi -target pal-dvd -ps 2000000000 -aspect 16:9 salida.mpeg
- target pal-dvd: Formato de salida
- ps 2000000000: Tamaño máximo del archivo resultante en bits (en el ejemplo, 2Gb)
- aspect 16:9: Panorámico
Comprimir avi a divx
ffmpeg -i entrada.avi -s 320×240 -vcodec msmpeg4v2 salida.avi
Comprimir Ogg Theora a Mpeg dvd
ffmpeg -i entrada.ogm -s 720×576 -vcodec mpeg2video -acodec mp3 salida.mpg
Comprimir avi a SVCD mpeg2
Para PAL:
ffmpeg -i entrada.avi -target pal-svcd salida.mpg
Para NTSC:
ffmpeg -i entrada.avi -target ntsc-svcd salida.mpg
Comprimir avi a VCD mpeg2
Para PAL:
ffmpeg -i entrada.avi -target pal-vcd salida.mpg
Para NTSC:
ffmpeg -i entrada.avi -target ntsc-vcd salida.mpg
Codificación con varias pasadas
ffmpeg -i entrada -pass 2 -passlogfile ffmpeg2pass salida
Fuente: CatsWhoCode | traducción por Zootropo
25Oct
Me comentaba Daniel de http://danubuntu.wordpress.com/ (bueno, la verdad no se si se llama Daniel, pero supongo), en un comentario a cerca de cómo sobreponer una imagen solo por unos segundos. Yo le respondí que ya había escrito sobre el tema en una de las entradas que he publicado sobre hooks, pero parece que entre tanta edición había quitado esa parte.
Así que le(s) dejo el comando con el que se puede hacer esto.
Sobreponiendo texto o imágenes durante algunos segundos
ffmpeg -i entrada.avi -vhook 'vhook/imlib2.so -t texto_y_texto -A max(0,255-exp(N/47))' salida.avi
Lo que hace esto es, en realidad, quitarle el color al texto (recuerda que también se puede con imágenes), después de pasados unos segundos.
24Oct
Como hemos visto en otras entradas relacionadas con ffmpeg, esta herramienta es bastante útil para realizar una gran cantidad de tareas de edición de video. Sin embargo, aparte de simplemente convertir video o extraer audio, existen otros usos avanzados con el que podemos crear algunos efectos interesantes. En esta entrada aprenderemos a usar algunos de ellos, todos en un solo ejemplo.
Continuando con un ejemplo de otra entrada, en donde poníamos en cámara lenta un video, vamos a agregar un par de efectos. Lo primero será crear una cortina que cubra el video, y posteriormente un par de imágenes moviéndose que simularán un par de luces.
Primer ejemplo - Crear un video estático a partir de una imagen con ffmpeg
Lo primero es crear un video en donde tengamos las cortinas estáticas. Así, usando ésta imagen, el comando sería el siguiente:
ffmpeg -loop_input -i cortina.jpg -t 10 cortina.mpg
Esto creará un video con una imagen estática. La opción -loop_input es imprescindible puesto que el archivo de entrada es una simple imagen, es decir, solo un frame, y por tanto es necesario repetirlo durante el video. La opción -t indica a ffmpeg que el video durará 10 segundos. Leer el resto de la entrada...
23Oct
Ahora que conocemos las variables que podemos usar con la librería imlib2, vamos con dos ejemplos simples en el que vamos a sobreponer una imagen en movimiento y luego un crear un efecto de "créditos" con archivo de texto.
Ejemplo 1 - Imagen en movimiento
En este sencillo ejemplo se insertará una imagen realizando una trayectoría lineal a través del video. El comando es el siguiente:
ffmpeg -i entrada.avi -vhook '/usr/lib/vhook/imlib2.so -x 10+0.5*N -y 20+0.5*N -i tux.png' salida.mpg
Explicación...
En este comando usamos las variables que se explican en la entrada pasada:
- -vhook, activamos el uso de los hooks
- /usr/lib/vhook/imlib2.so, indica que usaremos la librería
imlib2
- -x 10+0.5*N y -y 20+0.5*N, representa la coordenada de la imagen en cada frame. Recordemos que N es igual al número del frame actual. Por tanto, a medida que N va incrementando, las coordenadas X y Y también. Esto hace que la imagen se mueva en diagonal desde la esquina superior izquiera, hacia la esquina inferior derecha.
- -i tux.png, es la imagen a utilizar
Ejemplo 2 - Texto en movimiento [tipo créditos]
En el siguiente ejemplo usamos imlib2 para leer un archivo de texto y mostrar su contenido en forma de créditos; el comando es:
ffmpeg -i entrada.avi -vhook '/usr/lib/vhook/imlib2.so -F /var/lib/defoma/gs.d/dirs/fonts/Purisa.ttf/10 -x 100 -y -1.0*N -f creditos.txt' salida.mpg
Explicación...
- -vhook, activamos el uso de los hooks
- /usr/lib/vhook/imlib2.so, indica que usaremos la librería imlib2
- -F /var/lib/defoma/gs.d/dirs/fonts/Purisa.ttf/10, indica que usaremos el tipo de letra Purisa a tamaño 10
- -x 100 y -y -1.0*N, representa la coordenada del texto en cada frame. Recordemos que N es igual al número del frame actual. Como puedes ver el valor de X es siempre constante, puesto que no queremos que se mueva hacia los lados. Por otro lado, Y varía cada vez que pasemos al siguiente frame, o sea que, a medida que N va incrementando, las coordenadas Y también.
En este ejemplo los créditos se mueven de abajo hacia arriba. Si quisieramos invertir dicho movimiento, bastaría con poner el parámetro de -y en positivo.
- -f creditos.txt, es el archivo de texto que contiene los créditos
23Oct
En el anterior artículo veíamos un par de ejemplos del uso de hooks, específicamente para sobreponer imágenes o texto en un video, aunque no hicimos nada avanzado. Antes de continuar con esta serie de ejemplos, vamos a repasar un poco las opciones avanzadas para imlib2.so.
Algunas veces necesitamos sobreponer imágenes o texto en movimiento, para lo cual imlib2.so proporciona algunas variables y constantes que podemos usar al momento de fijar las coordenadas; estas son:
| N |
Número del frame (inicia en cero) |
| H |
altura del frame |
| W |
anchura del frame |
| h |
altura de la imagen |
| w |
anchura de la imagen |
| X |
coordenada horizontal previa del texto o imagen |
| Y |
coordenada vertical previa del texto o imagen |
Es posible además usar la constante PI y funciones matemáticas como por ejemplo seno (sin), valor absoluto (abs), tangente (tan), etc. (todas las que están disponibles en el evaluador de fórmulas de ffmpeg).
Y si te preguntas para qué demonios se utilzan las fórmulas matemáticas, pues bien... resultan especialmente útiles cuando se quieren realizar efectos de movimiento con curvas, de manera automática. Vamos a ver un ejemplo en la próxima entrada; pero antes es importante que tengas claro esto.