Manual básico del comando ffmpeg

March 20, 2018 | Author: tecnologialibre | Category: Mp3, Storage Media, Film And Video Technology, Data Compression, Software
Share Embed Donate


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

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF