MANUAL BÁSICO DEL COMAND COMANDO O FFMPEG
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-NonCommerci Attribution-NonCommercial-ShareAlike al-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.................. 1.Introducción......................................... .............................................. .............................................. .............................................. ................................................4 .........................4 2.Instalación 2.Instalación del comando ffmpeg......................... ffmpeg................................................ .............................................. .............................................. .................................4 ..........4 3.Ejemplos de manipulación de vídeo y audio................................ audio....................................................... .....................................................4 ..............................4 4.Bibliografía.............. 4.Bibliografía..................................... .............................................. ............................................... ............................................... ..................................................14 ...........................14
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, audio y fotografía. fotografía. Aunque nació para GNU/Linux, puede compilarse en la mayoría de sistemas operativos. Entre otras cosas permite: a) Camb Cambia iarr de de form format ato. o. b) Comprimi Comprimir, r, extraer extraer imáge imágenes nes y vídeo vídeo.. c) Hacer Hacer un vídeo vídeo a parti partirr de imág imágen enes. es. d) Insertar Insertar marcas marcas de agua agua (texto (texto o fotogra fotografía fías) s) en un vídeo. vídeo. e) Etc.
2. Inst Instal alac ació ión n del del coma comand ndoo ffmp ffmpeg eg a) En Ubuntu: Ubuntu: sudo apt-get apt-get install install ffmpeg ffmpeg b) En Debian: Debian: apt-get apt-get install install ffmpeg ffmpeg
3. Ejempl Ejemplos os de de manip manipula ulació ción n de víd vídeo eo y audi audioo 1. De wmv → flv: ffmpeg -i entrada.wmv salida.flv
2. De wmv → mp mpeeg: ffmpeg -i entrada.wmv salida.mpeg
3. De avi → gif: ffmpeg -i entrada.avi salida.gif
4. De wmv wmv → flv espe especifi cifica cando ndo par paráme ámetr tros: os: ffmpeg -i entrada.wmv -ab 56 -ar 22050 -r 15 -s 320×240 salida.flv
Notas: a) -ab es lel 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 indi indica ca la resolució resoluciónn (ancho (ancho x alto) alto) del vídeo que queremos queremos obtener 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 Cuando el nombre nombre del vídeo vídeo está está formad formadoo por varias varias palabra palabrass (por ej emplo de wmw → DVD tipo PAL) PAL): ffmpeg -i "video de entrada".wmv -target pal-dvd salida.mpeg
Nota: a) El uso de las las “” es necesario necesario para para poder poder usar nombres nombres de archivo archivoss formados formados por más de una palabra. 6. De flv flv → mp4 mp4 espe especifica cificando ndo varios varios parámetr parámetros: os: 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. 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 avi → vide videoc ocd d (PAL (PAL): ): ffmpeg -i entrada.avi -target pal-vcd salida.mpeg
Nota: a) -target especif especifica ica el tip tipoo de formato formato dvd compatib compatible. le. Algunas Algunas opciones opciones a "vcd" "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 av avi → divx: ffmpeg -i entrada.avi -s 320×240 -vcodec msmpeg4v2 salida.avi
9. De dv → DV DVD: ffmpeg -i entrada.dv -target pal-dvd salida.mpeg
10. De mpeg mpeg → xvid: 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 (Digital video): video): ffmpeg -i entrada.avi -target pal-dv salida.dv
12. De dv dv → flv: 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 = -f = formato al que se quiere forzar. 13. Extraer 120 120 segundos de un vídeo a partir 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 e1 minuto). 6
Joaquín V. Álvarez Martín. Manual básico del comando ffmpeg
c) -sameq para que el vídeo de salida mantenga la misma calidad que el vídeo de entrada. d) El tiempo tiempo también también se puede indicar indicar mediante mediante el formato formato "hh:mm:ss[.xxx]". "hh:mm:ss[.xxx]". 14. De mpeg (por ejemplo) → 3gp (típico de teléfonos móviles): móviles): ffmpeg -i entrada.mpeg -s qcif -r 15 -ac 1 -ar 8000 -b 256000 -ab 15 salida.3gp
15. De 3gp 3gp → mp4: mp4: ffmpeg -i entrada.3gp -vcodec mpeg4 -acodec libmp3lame salida.mp4
16. Para poder ver un vídeo vídeo en el iPod/iPhone: 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 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 una codificación con con varias pasadas: pasadas: ffmpeg -i entrada -pass 2 -passlogfile ffmpeg2pass salida
19. Pasar un vídeo a Full HD (formato (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 Convertir un vídeo para que ocupe menos y podamos subirlo subirlo a internet internet sin tener 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 utiliz utilizar ar el contenedo contenedorr webm con vídeo vídeo codifica codificado do en VP8 y audio audio codifica codificado do con theora ogg vorbis. Esto es otro ejemplo de lo que se puede hacer gracias al código abierto. 21. Convertir un vídeo vídeo en imágenes jpg (hay que poner poner el %): ffmpeg -i video.mpeg imagen%d.jpg
22. Extraer una imagen imagen concreta concreta de un vídeo (por ejemplo del del segundo 10): ffmpeg -itsoffset 0 -i video.mpeg -ss 10 -vcodec png -vframes 1 imagen.png
Nota: a) -itso -itsoff ffse sett 0 esta establ blec ecee el retr retras asoo en segu segund ndos os sobr sobree la capt captur ura. a. El form format atoo "[-]hh:mm:ss[.xxx]" "[-]hh:mm:ss[.xxx]" también está soportado. b) -vframes 1 indica que sólo se desea un frame. 23. Hacer un vídeo 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 establecer un bucle temporal sobre la imagen. 24. Hacer que un vídeo vídeo pase a cámara lenta (slow motion). 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 paso segundo segundo se recorta recorta el vídeo vídeo empezand empezandoo en el segundo segundo 5 y con una duración duración de 10 segundos. b)
Con el tercer paso se reduce r educe el framerate de 30 a 12 fps, dando lugar al efecto de cámara lenta.
c) Si en lugar lugar de poner poner el framerate framerate a 12 fps fps se le da un valor valor superio superiorr a 30 fps , se obtiene obtiene un vídeo a cámara rápida. 25. Extraer los 11 11 segundos (por ejemplo) primeros primeros de un vídeo: ffmpeg -i entrada.mpeg -t 11 salida.mpeg
26. Conver Convertir tir un víd vídeo eo desde desde el segundo segundo 10 hasta hasta el segund segundoo 12 en imá imáge genes nes (hay que poner el %): ffmpeg -i entrada.avi -ss 00:00:10 -t 2 captura%d.jpg
Nota: a) Las imágene imágeness pueden pueden llamarse llamarse como se desee desee siempre siempre que al final final del nombre nombre se inclya inclya la terminación %d. 27. convertir una una secuencia de imágenes imágenes en un vídeo (hay que poner poner el %): ffmpeg -i imagen%d.jpg video.mpeg
Notas: a) El vídeo vídeo obt obteni enido do no tie tiene ne audio audio.. b) Para que el código código anterior anterior tenga tenga éxito es necesari necesarioo que las imágenes imágenes estén estén nombradas nombradas como imagen1.jpg, imagen2.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 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 el escritorio (por ejemplo a 800x600): 800x600): ffmpeg -f x11grab x11grab -s 800x600 -r 25 -i-i :0.0 -sameq grabacion.avi
30. Crear un vídeo avi a partir de varios varios VOB de un dvd dvd (son dos pasos): Primer paso: cat VTS_ VTS_01 01_1 _1.V .VOB OB VTS_ VTS_01 01_2 _2.V .VOB OB VTS_ VTS_01 01_3 _3.V .VOB OB VTS_ VTS_01 01_4 _4.V .VOB OB VTS_ VTS_01 01_5 _5.V .VOB OB > 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 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) Otra Otrass opci opcion ones es son son:: -padleft para encoger a la izquierda y -padright para encoger a la derecha. 32. Recortar un vídeo cambiandolo cambiandolo de tamaño: ffmpeg -i entrada.flv 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) Otra Otrass opci opcion ones es son son:: -cropleft para borrar a la izquierda y -cropright para borrar a la derecha. 33. Unir varios vídeos vídeos en un único único vídeo (son dos dos pasos): Primero se pasan a mpeg para mpeg para que estén en un formato común: 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 Desentrelazar un vídeo: ffmpeg -i entrada.dv -deinterlace -acodec copy salida.dv
35. Conocer los codecs asociados asociados a un vídeo (muy útil): ffmpeg -i video.avi
36. Poner vídeo vídeo en alta calidad con dos pases: 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
Segu Segund ndoo coma comand ndoo a ejec ejecut utar ar (a su term termin inac ació iónn pu pued eden en bo borr rrar arse se los los arch archiv ivos os 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. 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 asociados a un audio (muy útil): ffmpeg -i cancion.wma
39. De mp3 mp3 → wma: wma: ffmpeg -i entrada.mp3 salida.wma
40. Extraer Extraer audio audio de un vídeo: vídeo: ffmpeg -i video.mpeg -vn audio.mp3
Nota: a) -vn: -vn: video no. 41. Unir audio audio y un vídeo: vídeo: ffmpeg -i video.avi -i audio.mp3 todojunto.avi
42. Unir audio y un vídeo especificando especificando un codec codec de audio concreto: 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 especificando un codec de vídeo vídeo concreto: ffmpeg -i video.avi -vcodec mpeg4 -vtag xvid todojunto.avi
44. Extrae Extraerr un fragment fragmentoo de un aud audio io (es igu igual al qu quee para para extrae extraerr un fragment fragmentoo de un vídeo): ffmpeg -i entrada.mp3 -t 120 -ss 60 -sameq salida.mp3
45. Extraer los 11 11 segundos primeros 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: 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 Extraer dos canales canales de audio (60 segundos segundos por ejemplo) ejemplo) de un vídeo vídeo (por ejemplo 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 varios audios audios:: cat musica1.mp3 musica2. mp3 > juntos.mp3
49. Conocer los codecs codecs y formatos que maneja maneja la versión instalada del comando comando ffmpeg: fffmpeg -formats
13
Joaquín V. Álvarez Martín. Manual básico del comando ffmpeg
4. 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
14