Convirtiendo audio y video con ffmpeg

7 de julio de 2012

Convertir audio y video con ffmpeg

Es posible convertir audio y video con ffmpeg. Por ejemplo un archivo .wav se puede convertir a un archivo .mp3 o un archivo .mp4 se puede convertir a un archivo .flv

ffmpeg es software libre y puede descargarse gratis desde el sitio:

http://www.ffmpeg.org

El programa está disponible para computadoras con Linux, Windows y Mac

ffmpeg maneja múltiples formatos de audio y video entre ellos:

ffmpeg no tiene una interfase gráfica, esto quiere decir que no tiene ventanitas ni botones para trabajar con él... Esta situación amedrentará a más de uno pero con un poco de práctica se descubrirá que no es tan difícil operarlo.

ffmpeg se usa desde la línea de comandos, lo que significa que se deben escribir los comandos, las instrucciones, para trabajar con él.

Algunas tareas que se pueden hacer con ffmpeg son:

Convertir audio de un formato a otro

Ffmpeg puede convertir archivos de un formato de audio a otro. Por ejemplo puede convertir de mp3 a flac, de flac a mp3, de wav a mp3, de mp3 a wav, etc.

Para convertir un archivo wav a mp3 se puede usar este comando:

ffmpeg -i audio_original.wav audio_convertido.mp3

Con letras de color se esribió lo que NO SE DEBE MODIFICAR, el resto es lo que se puede modificar acorde a las necesidades.

Ahora se explica este comando.

ffmpeg es el comando para ejecutar ffmpeg

-i define el archivo original

audio_original.wav es el nombre del archivo del cual se extraerá el audio.

audio_convertido.mp3 el nombre y tipo del archivo de audio resultante. En este ejemplo se creará un archivo mp3 pero podemos crear un archivo en cualquier otro formato.

Existen muchas más opciones disponibles. Se puede elegir por ejemplo:

Convertir video de un formato a otro

Ffmpeg puede convertir archivos de un formato de video a otro. Por ejemplo puede convertir de flv a mp4, de mp4 a flv, de mpg a flv, de flv a mpg, etc.

Para convertir un archivo avi a flv se puede usar este comando:

ffmpeg -i video_original.avi video_convertido.flv

Con letras de color se esribió lo que NO SE DEBE MODIFICAR, el resto es se puede modificar acorde a las necesidades.

Ahora se explica este comando:

ffmpeg es el comando para ejecutar ffmpeg

-i define el archivo original

video_original.avi es el nombre del archivo original a convertir.

video_convertido.flv el nombre y tipo del archivo de video resultante. En este ejemplo se creará un archivo flv pero podemos crear un archivo en cualquier otro formato.

Existen muchas más opciones disponibles. Se puede elegir por ejemplo:

Extraer audio de un video

Ffmpeg puede extraer el audio de un video. Por ejemplo puede extraer el audio de un video en formato avi y guardarlo en un archivo mp3, para ello se puede usar este comando:

ffmpeg -i video_original.avi audio_extraido.mp3

Con letras de color se esribió lo que NO SE DEBE MODIFICAR, el resto es lo que se puede modificar acorde a las necesidades.

Ahora se explica este comando:

ffmpeg es el comando para ejecutar ffmpeg

-i define el archivo original

video_original.avi es el nombre del archivo original a convertir

audio_extraido.mp3 es el nombre y tipo del archivo del audio resultante. En este ejemplo se creará un archivo mp3 pero podemos crear un archivo de audio en cualquier otro formato.

Existen muchas más opciones disponibles. Se puede elegir por ejemplo:

Cambiar la tasa de bits (bitrate) de un audio

Ffmpeg puede cambiar la tasa de bits (bitrate) de un audio. Por ejemplo puede transformar un archivo mp3 con una bitrate de 265kb a un archivo con una bitrate de 128kb, para esto se puede usar este comando:

ffmpeg -i audio_original.mp3 -ab 128k audio_convertido.mp3

Con letras de color se esribió lo que NO SE DEBE MODIFICAR, el resto es lo que se puede modificar acorde a las necesidades.

Ahora se explica este comando:

ffmpeg es el comando para ejecutar ffmpeg

-i define el archivo original

audio_original.mp3 es el nombre del archivo original a convertir

-ab el comando para asignar la tasa de bits ( bitrate )

128k define la nueva tasa de bits ( bitrate ), en este caso 128 kilobytes por segundo.

audio_convertido.mp3 es el nombre y tipo del archivo del audio resultante.

Se puede también hacer uso de las diferentes opciones disponibles.

Crear un video a partir de imagenes

Ffmpeg puede crear un video a partir de una imagen o varias imagenes.

Por ejemplo a partir de una imagen .png se puede crear un video de 30 segundos de duración en formato .flv, para esto se puede usar este comando:

ffmpeg -loop_input -i imagen_original.png -t 30 -qscale 2 video_final.flv

Con letras de color se esribió lo que NO SE DEBE MODIFICAR, el resto es lo que se puede modificar acorde a las necesidades.

Ahora se explica este comando:

ffmpeg es el comando para ejecutar ffmpeg

-loop_input permite crear un video a partir DE UNA IMAGEN

-i define el archivo original

imagen_original.png es el nombre del archivo original a convertir

-t es la duración del video final en segundos

-qscale es la calidad del video resultante, dónde 1 es la mayor calidad.

video_final.flv es el nombre y tipo del archivo del video resultante.

Se puede también hacer uso de las diferentes opciones disponibles.

Se puede crear un video a partir de varias imagenes .png y crear la ilusión de movimiento.

Aquí el primer paso es tener las imagenes png y guardarlas en el mismo directorio.

Las imagenes deben tener como nombre un número en sucesión y estar organizadas según el orden, por ejemplo:

0001.png corresponde a la primera imagen
0002.png corresponde a la segunda imagen
0003.png corresponde a la tercera imagen
etc.

Con este comando se crearía el video:

ffmpeg -r 12 -f image2 -i %04d.png video_final.mp4

Con letras de color se esribió lo que NO SE DEBE MODIFICAR, el resto es lo que se puede modificar acorde a las necesidades.

Ahora se explica este comando:

ffmpeg es el comando para ejecutar ffmpeg

-r el número de cuadros por segundo (frame rate) En cada cuadro se colocará una de las imagenes contenidas en el directorio.

-f image2 indica que la fuente del video serán imagenes

-i define el archivo original

%04d.png con este comando automáticamente se hace una iteración de todos los archivos contenidos en el directorio. Los archivos tiene que tener este nombre 0001.png CON CUATRO CARACTERES PARA EL NOMBRE SIN CONTAR LA EXTENSION. El número 4 indica el número de caracteres en el nombre del archivo. El número 4 se puede modificar acorde a las necesidades.

video_final.mp4 es el nombre y tipo del archivo del video resultante.

La duración del video dependerá del número de cuadros por segundo (frame rate) que se definió y el número de imagenes contenidas en el directorio.

A partir de las mismas imagenes se puede crear una versión en cámara lenta y una versión a velocidad normal de la misma escena.

Para crear la versión a cámara lenta se pude usar este comando:

ffmpeg -r 1 -f image2 -i %04d.png video_camara_lenta.mp4

Con letras de color se esribió lo que NO SE DEBE MODIFICAR, el resto es lo que se puede modificar acorde a las necesidades.

Ahora se explica este comando:

ffmpeg es el comando para ejecutar ffmpeg

-r el número de cuadros por segundo (frame rate) En cada cuadro se colocará una de las imagenes contenidas en el directorio. En este ejemplo se usará un cuadro / imagen por segundo. La duración del video dependerá del número de cuadros por segundo (frame rate) que se definió y el número de imagenes contenidas en el directorio.

-f image2 indica que la fuente del video serán imagenes

-i define el archivo original

%04d.png con este comando automáticamente se hace una iteración de todos los archivos contenidos en el directorio. Los archivos tiene que tener este nombre 0001.png CON CUATRO CARACTERES PARA EL NOMBRE SIN CONTAR LA EXTENSION. El número 4 indica el número de caracteres en el nombre del archivo. El número 4 se puede modificar acorde a las necesidades.

video_camara_lenta.mp4 es el nombre y tipo del archivo del video resultante.

Este es el resultado:

Para crear la versión a velocidad normal se pude usar este comando:

ffmpeg -r 12 -f image2 -i %04d.png video_velocidad_normal.mp4

Con letras de color se esribió lo que NO SE DEBE MODIFICAR, el resto es lo que se puede modificar acorde a las necesidades.

Ahora se explica este comando:

ffmpeg es el comando para ejecutar ffmpeg

-r el número de cuadros por segundo (frame rate) En cada cuadro se colocará una de las imagenes contenidas en el directorio. En este ejemplo se usarán 12 cuadros / imagenes por segundo. La duración del video dependerá del número de cuadros por segundo (frame rate) que se definió y el número de imagenes contenidas en el directorio.

-f image2 indica que la fuente del video serán imagenes

-i define el archivo original

%04d.png con este comando automáticamente se hace una iteración de todos los archivos contenidos en el directorio. Los archivos tiene que tener este nombre 0001.png CON CUATRO CARACTERES PARA EL NOMBRE SIN CONTAR LA EXTENSION. El número 4 indica el número de caracteres en el nombre del archivo. El número 4 se puede modificar acorde a las necesidades.

video_velocidad_normal.mp4 es el nombre y tipo del archivo del video resultante.

Este es el resultado:

El video a cámara lenta y a velocidad normal se generaron a partir de las mismas imágenes .png

Se puede también hacer uso de las diferentes opciones disponibles.

Capturar en video la pantalla de la computadora ( SCREENCAPTURE)

En Ubuntu ffmpeg es capaz de realizar una captura de pantalla en video.

Por ejemplo para capturar la pantalla en un vídeo en formato mp4 se puede usar este comando:

ffmpeg -f x11grab -s 800x600 -r 15 -qscale 2 -i :0.0 video_captura_pantalla.mp4

Con letras de color se esribió lo que NO SE DEBE MODIFICAR, el resto es lo que se puede modificar acorde a las necesidades.

Ahora se explica este comando:

ffmpeg es el comando para ejecutar ffmpeg

-f x11grab activa la captura de pantalla

-s define el tamaño en pixeles del video

800x600 define el tamaño del vídeo en píxeles. El primer valor se refiere al alto, el segundo al ancho. Se puede capturar toda la pantalla o sólo una parte. En este ejemplo capturaría toda la pantalla de un monitor con una resolución de 800 píxeles de largo por 600 píxeles de alto. Para capturar toda la pantalla los valores se deben modificar de acuerdo a la resolución del monitor.

-r define el número de cuadros por segundo (frame rate)

15 en este ejemplo se usarán 15 cuadros por segundo

-qscale define la calidad del vídeo

2 es la calidad del vídeo a usar. Los valores posibles son de 2 a 32 donde la mejor calidad es 2 y la peor 32

-i define el área de la pantalla a capturar

0.0 en este caso se captura toda la pantalla, pero se puede capturar una sección solamente

video_captura_pantalla.mp4 es el nombre y tipo de archivo resultante. En este caso se crea un archivo .mp4

Para capturar un una sección de la pantalla se puede utillizar este comando:

ffmpeg -f x11grab -s 800x600 -r 15 -qscale 2 -i :0.0+285,148 video_captura_pantalla.mp4

Con letras de color se esribió lo que NO SE DEBE MODIFICAR, el resto es lo que se puede modificar acorde a las necesidades.

Ahora se explica este comando:

ffmpeg es el comando para ejecutar ffmpeg

-f x11grab activa la captura de pantalla

-s define el tamaño en pixeles del video

800x600 define el tamaño del vídeo en píxeles. El primer valor se refiere al alto, el segundo al ancho. Se puede capturar toda la pantalla o sólo una parte.

-r define el número de cuadros por segundo (frame rate)

15 en este ejemplo se usarán 15 cuadros por segundo

-qscale define la calidad del vídeo

2 es la calidad del vídeo a usar. Los valores posibles son de 2 a 32 donde la mejor calidad es 2 y la peor 32

-i define el área de la pantalla a capturar

0.0+285,148 define la posición en la pantalla del área a capturar.

El número después del signo de más ( + ) indica la posición en píxeles en el plano de x (de arriba hacia abajo en el monitor ). El extremo superior de la pantalla es el punto de partida y tiene el valor 0.

El número  después de la coma ( , ) indica la posición en píxeles en el plano de y (de izquierda hacia derecha en el monitor ). El extremo izquierdo de la pantalla es el punto de partida y tiene el valor 0.

En este ejemplo el área a capturar comienza en el pixel 285 en el plano de x ( de arriba abajo en el monitor ) y en el pixel 148 en el plano de y (de izquierda hacia derecha en el monitor ).

video_captura_pantalla.mp4 es el nombre y tipo de archivo resultante. En este caso se crea un archivo .mp4

Convertir todos los archivos en la carpeta

En Ubuntu ffmpeg es capaz de convertir todos los archivos en una carpeta. Por ejemplo puede cambiar la tasa de bits (bitrate) de 265kb a 128kb de todos los archivos mp3 en una carpeta, para esto se puede usar este comando:

for f in *.mp3; do ffmpeg -i "$f" -ab 128k "./n/$f".mp3; done

Con letras de color se esribió lo que NO SE DEBE MODIFICAR, el resto es lo que se puede modificar acorde a las necesidades.

Ahora se explica este comando:

for f in *.mp3; crea una iteración para todos los archivos del tipo mp3. Cada archivo se almacenará en la variable f

do define la acción a realizar para todos los archivos

ffmpeg es el comando para ejecutar ffmpeg

-i define el archivo original

$f se hace uso de la variable f para hacer referencia a cada archivo.

-ab el comando para asignar la tasa de bits ( bitrate )

128k define la nueva tasa de bits ( bitrate ), en este caso 128 kilobytes por segundo.

./nuevos/$f.mp3; en este caso los archivos convertidos se guardarán en la carpeta nuevos para evitar sobre escribir los archivos originales. La carpeta nuevos está dentro de la carpeta que contiene los archivos originales. El nombre del archivo será el mismo del archivo original, que se almacenó en la variable f.

done termina la iteración

Esto es apenas una pequeña muestra de lo que ffmpeg puede hacer.

Sitios de interés.

Sitio oficial de ffmpeg


Comenta y opina este texto     Lee mi libro de visitas
© 1997-2014 Alain García Gómez
albegago@hotmail.com
El vínculo a este documento es:
http://www.alaingarcia.net/weird/ffmpeg_audio_video.php

Suscribase a nuestro RSS

Puedes apoyar a este sitio regalándome una c3rvez4