Manual básico del comando ffmpeg
Short Description
Download Manual básico del comando ffmpeg...
Description
MANUAL BÁSICO 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-ncsa/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. Instalación del comando ffmpeg a) En Ubuntu: sudo apt-get install ffmpeg b) En Debian: apt-get install ffmpeg
3. Ejemplos de manipulación de vídeo y audio 1. De wmv → flv: ffmpeg -i entrada.wmv salida.flv
2. De wmv → mpeg: ffmpeg -i entrada.wmv salida.mpeg
3. De avi → gif: ffmpeg -i entrada.avi salida.gif
4. De wmv → flv especificando parámetros: ffmpeg -i entrada.wmv -ab 56 -ar 22050 -r 15 -s 320×240 salida.flv
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). ffmpeg -i "video de entrada".wmv -target pal-dvd salida.mpeg
Nota: a) El uso de las “” es necesario para poder usar nombres de archivos formados por más de una palabra. 6. De flv → mp4 especificando varios parámetros: ffmpeg -i entrada.flv -vcodec mpeg4 -s 640×360 -ac 2 salida.mp4
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. 7. De avi → videocd (PAL): ffmpeg -i entrada.avi -target pal-vcd salida.mpeg
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: ffmpeg -i entrada.avi -s 320×240 -vcodec msmpeg4v2 salida.avi
9. De dv → DVD: ffmpeg -i entrada.dv -target pal-dvd salida.mpeg
10. De mpeg → xvid: ffmpeg -i entrada.mpeg -acodec libmp3lame -vcodec xvid -b 1200kb salida.avi
Nota: a)
-b es el bitrate del vídeo.
11. De avi → dv (Digital video): ffmpeg -i entrada.avi -target pal-dv salida.dv
12. De dv → flv: ffmpeg -i entrada.dv -ar 22050 -qscale 4 -s 380x284 -f flv saluda.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. 13. Extraer 120 segundos de un vídeo a partir del segundo 60: ffmpeg -i entrada.mpeg -t 120 -ss 60 -sameq vídeo_salida.mpeg
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
d) El tiempo también se puede indicar mediante el formato "hh:mm:ss[.xxx]". 14. De mpeg (por ejemplo) → 3gp (típico de teléfonos móviles): ffmpeg -i entrada.mpeg -s qcif -r 15 -ac 1 -ar 8000 -b 256000 -ab 15 salida.3gp
15. De 3gp → mp4: ffmpeg -i entrada.3gp -vcodec mpeg4 -acodec libmp3lame salida.mp4
16. Para poder ver un vídeo 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 elquequeramos salida.mp4
17. Para poder ver un vídeo en la PSP: ffmpeg -i entrada.avi -b 300 -s 320×240 -vcodec xvid -ab 32 -ar 24000 -acodec aac salida.mp4
18. Hacer una codificación con varias pasadas: ffmpeg -i entrada -pass 2 -passlogfile ffmpeg2pass salida
19. Pasar un vídeo a Full HD (formato 16:9): ffmpeg -i entrada.flv -sameq -pix_fmt rgb48le -s 1920x1080 -aspect 16:9 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: ffmpeg -i entrada.mpeg -sameq salida.webm
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. 21. Convertir un vídeo en imágenes jpg (hay que poner el %): ffmpeg -i video.mpeg imagen%d.jpg
22. Extraer una imagen concreta de un vídeo (por ejemplo del segundo 10): ffmpeg -itsoffset 0 -i video.mpeg -ss 10 -vcodec png -vframes 1 imagen.png
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: ffmpeg -loop_input -i aun.png -t 5 mas_tiempo.mpeg
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: sudo aptitude install ffmpeg mjpegtools
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
ffmpeg -i salida.flv -f yuv4mpegpipe - | yuvfps -s 12:1 -r 12:1 | ffmpeg -f yuv4mpegpipe -i - -b 28800k camara_lenta.flv
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. 25. Extraer los 11 segundos (por ejemplo) primeros de un vídeo: ffmpeg -i entrada.mpeg -t 11 salida.mpeg
26. Convertir un vídeo desde el segundo 10 hasta el segundo 12 en imágenes (hay que poner el %): ffmpeg -i entrada.avi -ss 00:00:10 -t 2 captura%d.jpg
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 %): ffmpeg -i imagen%d.jpg video.mpeg
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. 29. Grabar el escritorio (por ejemplo a 800x600): ffmpeg -f x11grab -s 800x600 -r 25 -i :0.0 -sameq grabacion.avi
30. Crear un vídeo avi a partir de varios VOB de un dvd (son dos pasos): Primer paso: cat VTS_01_1.VOB
VTS_01_2.VOB
VTS_01_3.VOB VTS_01_4.VOB
VTS_01_5.VOB
>
salida.mpeg
Segundo paso: ffmpeg -i salida.mpeg -vcodec libx264 -s 560x420 ar 24000 -ab 128k -f avi la-peli.avi
31. Recortar un vídeo sin cambiarlo de tamaño: ffmpeg -i entrada.flv -sameq -padtop 100 -padbottom 100 salida.flv
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. 32. Recortar un vídeo cambiándolo de tamaño: ffmpeg -i entrada.flv -sameq -croptop 100 -cropbottom 100 salida.flv
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 video1.avi -sameq video1.mpeg
ffmpeg -i video2.avi -sameq video2.mpeg
En segundo y último lugar se unen los vídeos resultantes usando cat: cat video1.mpeg video2.mpeg > nuevo_video.mpeg
34. Desentrelazar un vídeo: ffmpeg -i entrada.dv -deinterlace -acodec copy salida.dv
35. Conocer los codecs asociados a un vídeo (muy útil): ffmpeg -i video.avi
36. Poner vídeo en alta calidad con dos pases: Primer comando a ejecutar (crea una serie de archivos necesarios para el segundo paso): ffmpeg -y -i entrada.flv -r 30000/1001 -b 2M -bt 4M -vcodec libx264 -pass 1 -vpre fastfirstpass -an salida.mp4
Segundo comando a ejecutar (a su terminación pueden borrarse los archivos temporales usados):
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. 37. Quitar el sonido a un vídeo: ffmpeg -i entrada.avi -sameq -an salida.avi
38. Conocer los codecs asociados a un audio (muy útil): ffmpeg -i cancion.wma
39. De mp3 → wma: ffmpeg -i entrada.mp3 salida.wma
40. Extraer audio de un vídeo: ffmpeg -i video.mpeg -vn audio.mp3
Nota: a) -vn: video no. 41. Unir audio y un vídeo: ffmpeg -i video.avi -i audio.mp3 todojunto.avi
42. Unir audio y un vídeo especificando un codec de audio concreto: ffmpeg -i video.avi -i audio.mp3 -acodec libmp3lame todojunto.avi
12
Joaquín V. Álvarez Martín. Manual básico del comando ffmpeg
43. Unir audio y vídeo especificando un codec de vídeo concreto: ffmpeg -i video.avi -vcodec mpeg4 -vtag xvid todojunto.avi
44. Extraer un fragmento de un audio (es igual que para extraer un fragmento de un vídeo): ffmpeg -i entrada.mp3 -t 120 -ss 60 -sameq salida.mp3
45. Extraer los 11 segundos primeros de un audio (igual que para un vídeo): ffmpeg -i entrada.mp3 -t 11 salida.mp3
46. Añadir un nuevo canal de audio a un vídeo: ffmpeg -i entrada.avi -i audio-español.mp3 -sameq -acodec libmp3lame -acodec libmp3lame salida.avi -newaudio
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): ffmpeg -i entrada.avi -t 60 -map 0:1 -f mp3 -ab 128 -ac 2 cancion1.mp3
ffmpeg -i entrada.avi -t 60 -map 0:2 -f mp3 -ab 128 -ac 2 cancion2.mp3
48. Unir varios audios: cat musica1.mp3 musica2. mp3 > juntos.mp3
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): ffmpeg -threads 2 -i entrada.flv salida.avi
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: ffmpeg -y -i "How fast".ogg -pass 1 -target pal-dvd "How fast".mpeg
Segundo paso: ffmpeg -y -i "How fast".ogg -pass 2 -target pal-dvd "How fast".mpeg
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
4. Ejemplo completo: riperar un DVD casero Ripear un DVD es comprimirlo para que quepa en un CD o DVD. Como es lógico, esto supone pérdida de calidad, por lo que no siempre es recomendable, sobre todo teniendo en cuenta el precio de un DVD grabable a día de hoy. Este proceso se puede hacer de varias maneras. Una de ellas es la siguiente: 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
b) Después se calcula el tamaño del archivo de audio al comprimirlo a mp3: •
Si la compresión se hace a un bitrate de 64kb: 64 kb/s = 64x1000 b/s = 64000b/s = 64000/(8x1024x1024) MB/s = 0,007629395 MB/s
•
Entonces, si la duración de la película es de 2 horas 18 minutos 26 segundos, que son 8306 s, el tamaño del archivo del audio será: 0,007629395 MB/s x 8306 s = 63,4 MB
c) En tercer lugar se calcula el bitrate del vídeo , teniendo en cuenta la capacidad de un CD (700MB), el tamaño del archivo de audio y el posible margen de error (0,71% de 700MB = 5 MB): 700 - 63,4 - 5 = 631,6 ≈ 631MB para el vídeo disponibles.
Entonces, el bitrate del vídeo será: b = (631x1024x1024x8/1000) kb / 8306 s = 637,2 kb/s ≈ 637 kb/s
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
View more...
Comments