Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
DEL COMANDO
FFMPEG
(v 1.1)
Joaquín V. Álvarez Martín. Manual básico del comando ffmpeg
Autor:
Joaquín V. Álvarez Martín
Licencia:
Esta obra está bajo una licencia Attribution-NonCommercial-ShareAlike 3.0 Unported de Creative
Commons. Para ver una copia de esta licencia, visite http://creativecommons.org/licenses/by-nc-
sa/3.0/ o envie una carta a Creative Commons, 171 Second Street, Suite 300, San Francisco,
California 94105, US
2
Joaquín V. Álvarez Martín. Manual básico del comando ffmpeg
Índice de contenido
1.Introducción.......................................................................................................................................4
2.Instalación del comando ffmpeg........................................................................................................4
3.Ejemplos de manipulación de vídeo y audio.....................................................................................4
4.Ejemplo completo: riperar un DVD casero.....................................................................................15
5.Bibliografía......................................................................................................................................17
3
Joaquín V. Álvarez Martín. Manual básico del comando ffmpeg
1. Introducción
FFmpeg es un maravilloso ejemplo de software libre para la manipulación de vídeo y audio
(también permite realizar alguna opción sobre imágenes). Aunque nació para GNU/Linux, puede
compilarse en la mayoría de sistemas operativos. Entre otras cosas permite:
a) Cambiar de formato.
b) Comprimir, extraer imágenes y vídeo.
c) Hacer un vídeo a partir de imágenes.
d) Insertar marcas de agua (texto o fotografías) en un vídeo.
e) Etc.
2. De wmv → mpeg:
3. De avi → gif:
Notas:
a) -ab es el bitrate del audio, es decir, es el número de bits por segundo para el audio (a
mayor número mayor calidad).
b) -ar es la frecuencia del sonido en Hz.
4
Joaquín V. Álvarez Martín. Manual básico del comando ffmpeg
c) -s indica la resolución (ancho x alto) del vídeo que queremos obtener. Como es una
resolución no panorámica, dará problemas si el vídeo original no está en formato
panorámico.
d) -r es el número de imágenes por segundo (1 Hz = 1 / seg). Es opcional.
5. Cuando el nombre del vídeo está formado por varias palabras (por ejemplo de wmw →
DVD tipo PAL).
Nota:
a) El uso de las “” es necesario para poder usar nombres de archivos formados por más de
una palabra.
Notas:
a) -vcodec es la codificación que queremos emplear en el vídeo. Es opcional. Si no
sabemos cual usar hay dos opciones: no poner nada o poner -vcodec copy.
b) -ac son los canales de audio establecidos (1=mono, 2=estéreo, 6=envolvente). Si no los
establecemos, por defecto se determina un canal.
c) -acodec especifica el codec de audio que queremos emplear. Si no sabemos cual usar
hay dos opciones: no poner nada o poner -acodec copy.
Nota:
a) -target especifica el tipo de formato. Algunas opciones a "vcd" son: "svcd", "dvd", "dv",
"dv50", "pal-vcd", "ntsc-svcd"...
5
Joaquín V. Álvarez Martín. Manual básico del comando ffmpeg
8. De avi → divx:
9. De dv → DVD:
Nota:
a) -b es el bitrate del vídeo.
12. De dv → flv:
Notas:
a) -qscale = quantum scale esto afecta a como se comprime el vídeo. A menor numero
mejor calidad, aunque afecta al tamaño del vídeo final. El valor 4 resulta aceptable.
b) -f = formato al que se quiere forzar.
Notas:
a) -t es la duración en segundos del vídeo que se desea extraer (en este caso 120 segundos).
b) -ss es el tiempo en segundos desde donde se desea cortar el vídeo (en este caso desde el
minuto).
c) -sameq para que el vídeo de salida mantenga la misma calidad que el vídeo de entrada.
6
Joaquín V. Álvarez Martín. Manual básico del comando ffmpeg
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 elquequeramos salida.mp4
ffmpeg -i entrada.avi -b 300 -s 320×240 -vcodec xvid -ab 32 -ar 24000 -acodec aac salida.mp4
Nota:
a) -pix_fmt rgb48le ayuda a minimizar la pérdida de calidad, pues permite cambiar el
formato del pixel de 16 bits de información a 48.
20. Convertir un vídeo para que ocupe menos y podamos subirlo a internet sin tener que
esperar demasiado tiempo y sin que se note de forma significativa la pérdida de
calidad:
7
Joaquín V. Álvarez Martín. Manual básico del comando ffmpeg
Nota:
a) La idea es utilizar el contenedor webm con vídeo codificado en VP8 y audio codificado
con theora ogg vorbis. Esto es otro ejemplo de lo que se puede hacer gracias al código
abierto.
22. Extraer una imagen concreta de un vídeo (por ejemplo del segundo 10):
Nota:
a) -itsoffset 0 establece el retraso en segundos sobre la captura. El formato
"[-]hh:mm:ss[.xxx]" también está soportado.
b) -vframes 1 indica que sólo se desea un frame.
23. Hacer un vídeo (de 5 segundos por ejemplo) con una imagen:
Nota:
a) -loop input permite establecer un bucle temporal sobre la imagen.
24. Hacer que un vídeo pase a cámara lenta (slow motion). Son tres pasos:
Primero:
Segundo:
ffmpeg -vcodec copy -acodec copy -i entrada.flv -ss 00:00:05 -t 0:0:10 salida.flv
Tercero:
8
Joaquín V. Álvarez Martín. Manual básico del comando ffmpeg
Notas:
a) Con el paso segundo se recorta el vídeo empezando en el segundo 5 y con una duración
de 10 segundos.
b) Con el tercer paso se reduce el framerate de 30 a 12 fps, dando lugar al efecto de cámara
lenta.
c) Si en lugar de poner el framerate a 12 fps se le da un valor superior a 30 fps , se obtiene
un vídeo a cámara rápida.
26. Convertir un vídeo desde el segundo 10 hasta el segundo 12 en imágenes (hay que
poner el %):
Nota:
a) Las imágenes pueden llamarse como se desee siempre que al final del nombre se inclya
la terminación %d.
27. Convertir una secuencia de imágenes en un vídeo (hay que poner el %):
Notas:
a) El vídeo obtenido no tiene audio.
b) Para que el código anterior tenga éxito es necesario que las imágenes estén nombradas
como imagen1.jpg, imagen2.jpg,... Si las imágenes se llamaran 1.jpg, 2.jpg,... la línea de
código sería: ffmpeg -i %d.jpg video.mpeg
9
Joaquín V. Álvarez Martín. Manual básico del comando ffmpeg
28. Hacer un vídeo avi (la calidad aceptable depende de cada uno) de un vídeo dv (u otro
de mayor calidad):
ffmpeg -i entrada.dv -vcodec mpeg4 -vtag xvid -acodec libmp3lame -ar 22050 -ab 128k -qscale 4 -s
460x360 -f avi salida.avi
Nota:
a) -vtag es el video tag o etiqueta. No afecta a la calidad del vídeo, sólo lo etiqueta como
xvid sin más.
30. Crear un vídeo avi a partir de varios VOB de un dvd (son dos pasos):
Primer paso:
Segundo paso:
ffmpeg -i salida.mpeg -vcodec libx264 -s 560x420 ar 24000 -ab 128k -f avi la-peli.avi
Notas:
a) -padtop 100 encoge de arriba 100px.
b) -padbottom 100 encoge de abajo 100px.
c) Otras opciones son: -padleft para encoger a la izquierda y -padright para encoger a la
derecha.
10
Joaquín V. Álvarez Martín. Manual básico del comando ffmpeg
Notas
a) -croptop 100 borra de arriba 100px.
b) -cropbottom 100 borra de abajo 100px.
c) Otras opciones son: -cropleft para borrar a la izquierda y -cropright para borrar a la
derecha.
33. Unir varios vídeos en un único vídeo en formato mpeg (son dos pasos):
Primero se pasan a mpeg para que estén en un formato común:
ffmpeg -i video.avi
ffmpeg -y -i entrada.flv -r 30000/1001 -b 2M -bt 4M -vcodec libx264 -pass 1 -vpre fastfirstpass -an
salida.mp4
11
Joaquín V. Álvarez Martín. Manual básico del comando ffmpeg
ffmpeg -y -i entrada.flv -r 30000/1001 -b 2M -bt 4M -vcodec libx264 -pass 2 -vpre hq -acodec aac -ac
2 -ar 48000 -ab 192k salida.mp4
Notas:
a) Si aac no lo admite por estar en estado experimental, puede reemplazarse por otro, por
ejemplo libmp3lame.
b) hq indica calidad alta.
c) -y indica que los archivos de salida se van a sobreescribir.
ffmpeg -i cancion.wma
Nota:
a) -vn: video no.
12
Joaquín V. Álvarez Martín. Manual básico del comando ffmpeg
44. Extraer un fragmento de un audio (es igual que para extraer un fragmento de un
vídeo):
45. Extraer los 11 segundos primeros de un audio (igual que para un vídeo):
Notas:
a) -acodec libmp3lame (codec de audio mp3) se indica dos veces, una para cada pista.
b) -newaudio indica que se añade una pista nueva de audio al archivo de salida salida.avi.
47. Extraer dos canales de audio (60 segundos por ejemplo) de un vídeo (por ejemplo si
está en varios idiomas):
49. Conocer los codecs y formatos que maneja la versión instalada del comando ffmpeg:
ffmpeg -formats
13
Joaquín V. Álvarez Martín. Manual básico del comando ffmpeg
50. Extraer una pista de audio concreta (en este caso la número 4) de un vídeo (por
ejemplo, la correspondiente al idioma castellano de un película que está en varios
idiomas):
ffmpeg -i VTS_01_1.VOB -map 0:4 -vn -acodec libmp3lame -ar 22050 -ab 96k -ac 2 sonido.mp3
51. Usar varios hilos del procesador en la codificación (por ejemplo 2):
52. Codificar vídeo con en dos pasadas en vez de una (así se consigue mayor calidad,
aunque también requiere más tiempo). Son dos pasos:
Primer paso:
Segundo paso:
También es posible indicar estos dos pasos en una única línea de código (con &&):
ffmpeg -y -i "How fast".ogg -pass 1 -target pal-dvd "How fast".mpeg && ffmpeg -y -i "How fast".ogg
-pass 2 -target pal-dvd "How fast".mpeg
14
Joaquín V. Álvarez Martín. Manual básico del comando ffmpeg
a) En primer lugar se extraen y unen los archivos que interesan correspondientes del DVD,
dejando todos los demás archivos (anuncios, avisos legales, menús interactivos para el
DVD, etc.). Para ello, los archivos VOB cuyo contenido se desea grabar se copian en una
carpeta del disco duro. Esto que permitirá luego trabajar más rápidamente con ellos.
Después, se abre una terminal en esa carpeta y se ejecuta el comando que los une en uno
solo (en este ejemplo son 6 archivos a unir, siendo TJ.VOB el archivo unión de todos ellos):
cat VTS_01_1.VOB VTS_01_2.VOB VTS_01_3.VOB VTS_01_4.VOB VTS_01_5.VOB
VTS_01_6.VOB > TJ.VOB
d) En cuarto y último lugar se ejecuta el “comando” ffmpeg (para 2 hilos en este ejemplo, ya
que esto depende de cada procesador) y con dos pasadas (para ganar en calidad):
15
Joaquín V. Álvarez Martín. Manual básico del comando ffmpeg
ffmpeg -threads 2 -y -i TJ.VOB -pass 1 -map 0.0 -map 0.4 -acodec libmp3lame -ar 22050 -ab 64k -ac 2
-vcodec libxvid -b 637k -r 25 -s 460x360 pelicomprimida.avi && ffmpeg -threads 2 -y -i TJ.VOB -pass
2 -map 0.0 -map 0.4 -acodec libmp3lame -ar 22050 -ab 64k -ac 2 -vcodec libxvid -b 637k -r 25 -s
460x360 pelicomprimida.avi
Notas:
a) Al terminar el proceso de ripeado suele aparecer un error en respecto a la duración
calculada del orden del 0,5-0,7%. Esta es la razón por la cual al principio del ejemplo se
consideró el mismo.
b) Existen otros programas similares a ffmpeg para manipular audio y vídeo: mencoder,
transcode,...
c) Existen GUI's especializadas en el ripeo de DVDs, como por ejemplo “DVD rip” o
“DVD Encoder OGMRip”. Otras están más pensadas para la conversión general de
vídeos y audios.
d) Cuanto mayor sea la resolución (460x360 en este ejemplo) más se notará la pérdida de
calidad.
e) El tiempo necesario para ripear un DVD puede ser de varias horas.
16
Joaquín V. Álvarez Martín. Manual básico del comando ffmpeg
5. Bibliografía
• http://www.ffmpeg.org/
• man ffmpeg
• http://foro.noticias3d.com/vbulletin/showthread.php?t=345633
• http://www.guardarcomofilms.net
• http://mundogeek.net
• http://gnometips.com
• http://casidiablo.net
• http://www.usuadio.com
• http://www.rodrigopolo.com/ffmpeg/guia.html
• http://www.vagos.es/showthread.php?p=1055859910
• http://es.wikipedia.org/wiki/FFmpeg
17