Ejemplos de uso de ffmpeg

FFmpeg es un conversor de audio y video muy rápido y de código abierto. Podría decirse que  es como una navaja suiza para trabajar con audio y video, o más exactamente es una colección de software libre que puede grabar, convertir y hace streaming de audio y vídeo. Si usas Linux o UNIX, es posible que ya la hayas utilizado (usando la terminal, o bien a través de alguna GUI); si usas Windows, puede que conozcas Ffdshow, que es parte del mismo proyecto pero enfocado a este sistema operativo.

Como es una herramienta de línea de órdenes (aunque tenga interfaces gráficas para su manejo) se puede automatizar facilmente para ejecutarlo mediante scripts, o bien usarlo en desde un ordenador remoto. Este programa puede estar disponible en algunos servicios de alojamiento web (por ejemplo: en DreamHost está en /usr/bin), lo que puede ser útil por ejemplo, si utilizas Gallery 2 y has subido archivos de video o audio a tu instalación. Y si tienes acceso mediante SSH, tanto mejor.

Su sintaxis general de utilización es ffmpeg [[infile options]['-i' infile]]... {[outfile options] outfile}...; puedes ver todas las opciones disponibles en FFmpeg Documentation.

También puedes encontrar mucha información buscando por la red, que está repleta de tutoriales y recetas para poder aprovechar todo el potencial de esta herramienta (un buen sitio para empezar podría ser la sección dedicada a ella en casidiablo.net). En este artículo, mostraré dos usos que tengo pensado usar con frecuencia: transformar una grabación de audio a mp3 y codificar un video Flash.

Convertir grabaciones de audio a mp3

Supongamos que queremos convertir una grabación en formato WAV ADPCM, 8000Hz, 32 kbps a MP3; tendríamos que usar la orden:

ffmpeg -i input.wav -acodec mp3 -ab 32 -ar 44100 output.mp3

Donde -i señala el archivo de entrada, -acodec el codec de salida, -ab el bitrate y -ar la frecuencia de muestreo.

Por si te resulta extraño estos números, aclaro que esto no es para grabar música ni sonidos de gran calidad; es más bien para grabaciones de voz o de otros sonidos que no necesitan un bitrate muy alto.

Codificar un video flash

A pesar de que detesto el uso de flash en la web, he de reconocer que es una buena opción por ejemplo para transmitir un video usando poco ancho de banda. El video flash (.flv) muy probablemente pesará mucho menos que el original. La orden a usar para convertir un AVI a Flash sería:

ffmpeg -i input.avi -acodec mp3 -ab 32 -ac 1 -ar 44100 output.flv

Bastante parecido al anterior, pero se agrega -ac 1 que indicará un canal de audio de salida (o sea, en mono, no en estéreo). Como el archivo de salida tiene extensión flv, FFmpeg ajusta las demás opciones de manera acorde para generar un video apto para reproductores Flash.

Fuentes: Yukei.net y Wikipedia

Añadido (08-11-08): en LinuxParaSeresHumanos me he encontrado esta información que me interesa tener a mano. Para empezar, estas son las opciones más típicas que puede interesar indicar, y sus valores por defecto:

-ab : audio bitrate en kbit/s. Por defecto 64 kb/s.

-b : video bitrate en kbit/s. Por defecto 200 kb/s.

-ar : frecuencia del audio en Hz. Por defecto 44100 Hz.

-s : Tamaño del vídeo de salida en pixels. Por defecto es el mismo que el de entrada.

Hace tiempo publiqué un artículo sobre un programa para convertir de y hacia formatos de vídeo típicos de los móviles. Pues bien, usando ffmpg podemos ahorrarnos tener que usar otro programa para esta tarea:

Conversión de 3GP a AVI

ffmpeg -i video.3gp -f avi -vcodec libxvid -acodec mp3 -ar 22050 video.avi
Para esta conversión compureba los codecs disponibles ejecutando ffmpeg -version. Tiene que tener –enable-libxvid. Si fuese xvid asolo, lo cambiáis la orden anterior.

Conversión de AVI a 3GP

ffmpeg -i video.avi -s qcif -vcodec h263 -acodec mp3 -ac 1 -ar 8000 -r 25 -ab 32 -y video.3gp

Conversión de MPEG a 3GP

ffmpeg -i video.mpg -s qcif -vcodec h263 -acodec mp3 -ac 1 -ar 8000 -ab 32 -y video.3gg

Añadido (15-09-09):
He visto más ejemplos que pueden venir bastante bien, en los siguientes blogs:

4 Comments »

  1. 1
    Jefrey Says:

    Interesante articulo…. te agradecería si puedes explicar el comando -f para que sirve… he tratado de redimensionar un video y me dice siempre que no encuentra el archivo en la carpeta temporal… esto solo sucede cuando trato de colocarle el tamaño que yo quiera. sino le indico que tamaño, es decir, el mismo que es el que asigna por defecto, si lo convierte.

    Saludos

    Like

  2. 2
    A. Angel Says:

    Hola.

    Comentas al inicio de tu artículo:

    “es una colección de software libre que puede grabar, convertir y hace streaming de audio y vídeo”

    Sin embargo en el articulo no comentas nada sobre hacer streaming de audio y video, sabes alguna información al respecto, una dirección de algun tutorial.

    Saludos, buen artículo.

    Like

  3. 3
    DaniFP Says:

    Hola, no se si aún tendrás la duda, pero por si acaso respondo. No he usado nunca ffmpeg para streaming, pero puedes consultar la documentación oficial en http://ffmpeg.mplayerhq.hu/ffmpeg-doc.html
    Contiene una descripción de todas las opciones del programa, y buenos ejemplos de uso. Saludos.

    Like

  4. 4
    Mauricio Says:

    Hola, hay alguna forma de agregar una imagen a un archivo de audio y asi convertirlo en archivo de video?

    Saludos y Gracias

    Like


RSS Feed for this entry

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: