En esta guía, explicaré cómo usar el marco multimedia FFmpeg para realizar varias operaciones de transcodificación y conversión de audio y video con ejemplos. He compilado más de 20 comandos FFmpeg de uso común y frecuente para principiantes.
Seguiré actualizando esta guía agregando más ejemplos de vez en cuando. Marque esta guía como favorita y regrese en un momento para verificar las actualizaciones. Comencemos, ¿de acuerdo?
Instalar FFmpeg en Linux
Si aún no ha instalado FFmpeg en su sistema Linux, consulte la siguiente guía.
- Instalar FFmpeg en Linux
Comandos FFmpeg con ejemplos
La sintaxis típica del comando FFmpeg es:
ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...
Ahora vamos a ver algunos comandos FFmpeg importantes y útiles.
1. Obtener información de archivos de audio/video
Para mostrar los detalles de un archivo multimedia, ejecute:
$ ffmpeg -i video.mp4
Salida de muestra:
ffmpeg version n4.1.3 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 8.2.1 (GCC) 20181127 configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-nvdec --enable-nvenc --enable-omx --enable-shared --enable-version3 libavutil 56. 22.100 / 56. 22.100 libavcodec 58. 35.100 / 58. 35.100 libavformat 58. 20.100 / 58. 20.100 libavdevice 58. 5.100 / 58. 5.100 libavfilter 7. 40.101 / 7. 40.101 libswscale 5. 3.100 / 5. 3.100 libswresample 3. 3.100 / 3. 3.100 libpostproc 55. 3.100 / 55. 3.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf58.20.100 Duration: 00:00:28.79, start: 0.000000, bitrate: 454 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, smpte170m/bt470bg/smpte170m), 1920x1080 [SAR 1:1 DAR 16:9], 318 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default) Metadata: handler_name : ISO Media file produced by Google Inc. Created on: 04/08/2019. Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default) Metadata: handler_name : ISO Media file produced by Google Inc. Created on: 04/08/2019. At least one output file must be specified
Como puede ver en el resultado anterior, FFmpeg muestra la información del archivo multimedia junto con los detalles de FFmpeg, como la versión, los detalles de configuración, el aviso de derechos de autor, las opciones de compilación y biblioteca, etc.
Si no desea ver el banner FFmpeg y otros detalles, sino solo la información del archivo multimedia, use -hide_banner
marca como a continuación.
$ ffmpeg -i video.mp4 -hide_banner
Salida de muestra:
¿Ver? Ahora, solo muestra los detalles del archivo multimedia.
Lectura sugerida:
- Mostrar información de archivos multimedia en Linux usando MediaInfo
2. Conversión de archivos de video a diferentes formatos
Dado que FFmpeg es un convertidor de audio y video potente y rico en funciones, es posible convertir archivos multimedia entre diferentes formatos. Digamos, por ejemplo, para convertir mp4
archivo a avi
archivo , ejecuta:
$ ffmpeg -i video.mp4 video.avi
Del mismo modo, puede convertir archivos multimedia a cualquier formato de su elección.
Por ejemplo, para convertir YouTube flv
formatear videos a mpeg
formatear, ejecutar:
$ ffmpeg -i video.flv video.mpeg
Si desea preservar la calidad de su archivo de video fuente, use '-qscale 0'
parámetro:
$ ffmpeg -i input.webm -qscale 0 output.mp4
Para verificar la lista de formatos admitidos por FFmpeg, ejecute:
$ ffmpeg -formats
3. Conversión de archivos de video a archivos de audio
Para convertir un archivo de video a un archivo de audio, simplemente especifique el formato de salida como .mp3
o .ogg
, o cualquier otro formato de audio.
El comando anterior convertirá input.mp4
archivo de vídeo a output.mp3
archivo de audio.
$ ffmpeg -i input.mp4 -vn output.mp3
Además, puede usar varias opciones de transcodificación de audio para el archivo de salida, como se muestra a continuación.
$ ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -ab 320 -f mp3 output.mp3
Aquí,
-vn
- Indica que hemos deshabilitado la grabación de video en el archivo de salida.-ar
- Establecer la frecuencia de audio del archivo de salida. Los valores comunes utilizados son22050
,44100
,48000
Hz.-ac
- Establecer el número de canales de audio.-ab
- Indica la tasa de bits de audio.-f
- Formato de archivo de salida. En nuestro caso, esmp3
formato.
El comando anterior mostrará un mensaje de advertencia como el siguiente.
[libmp3lame @ 0x5589ed539240] Bitrate 320 is extremely low, maybe you mean 320k The bitrate parameter is set too low. It takes bits/s as argument, not kbits/s
Esto se debe a que le hemos dado 320
bits/segundo como tasa de bits, que es muy baja. Esto creará un archivo de salida más pequeño. Para obtener resultados de la mejor calidad, utilice un valor de tasa de bits como 320k
en lugar de solo 320
.
4. Cambiar el volumen de los archivos de audio
FFmpeg nos permite cambiar el volumen de un archivo de audio usando "volume filter"
opción.
Por ejemplo, el siguiente comando reducirá el volumen a la mitad.
$ ffmpeg -i input.mp3 -af 'volume=0.5' output.mp3
Del mismo modo, podemos aumentar el volumen como se muestra a continuación:
$ ffmpeg -i input.mp3 -af 'volume=1.5' output.mp3
5. Cambiar la resolución de los archivos de video
Si desea establecer una resolución particular para un archivo de video, puede usar el siguiente comando:
$ ffmpeg -i input.mp4 -filter:v scale=1280:720 -c:a copy output.mp4
O,
$ ffmpeg -i input.mp4 -s 1280x720 -c:a copy output.mp4
El comando anterior establecerá la resolución del archivo de video dado en 1280x720
.
Del mismo modo, para convertir el archivo anterior a 640x480
tamaño, ejecutar:
$ ffmpeg -i input.mp4 -filter:v scale=640:480 -c:a copy output.mp4
O,
$ ffmpeg -i input.mp4 -s 640x480 -c:a copy output.mp4
Este truco te ayudará a escalar tus archivos de video a dispositivos de visualización más pequeños, como tabletas y teléfonos móviles.
6. Comprimir archivos de video
Siempre es una buena idea reducir el tamaño de los archivos multimedia a un tamaño más bajo para ahorrar espacio en el disco.
El siguiente comando comprimirá y reducirá el tamaño del archivo de salida.
$ ffmpeg -i input.mp4 -vf scale=1280:-1 -c:v libx264 -preset veryslow -crf 24 output.mp4
Tenga en cuenta que perderá calidad si intenta reducir el tamaño del archivo de video. Puedes bajar ese crf
valor a 23
o menor si 24
es demasiado agresivo.
También puede transcodificar un poco el audio y convertirlo en estéreo para reducir el tamaño al incluir las siguientes opciones.
-ac 2 -c:a aac -strict -2 -b:a 128k
7. Comprimir archivos de audio
Al igual que comprimir archivos de video, también puede comprimir archivos de audio usando -ab
bandera para ahorrar algo de espacio en disco.
Digamos que tienes un archivo de audio de 320
tasa de bits de kbps. Desea comprimirlo cambiando la tasa de bits a cualquier valor más bajo como se muestra a continuación.
$ ffmpeg -i input.mp3 -ab 128 output.mp3
La lista de varias tasas de bits de audio disponibles son:
- 96 kbps
- 112 kbps
- 128 kbps
- 160 kbps
- 192 kbps
- 256 kbps
- 320 kbps
8. Eliminación de secuencias de audio de un archivo de video
Si no desea audio de un archivo de video, use -an bandera.
$ ffmpeg -i input.mp4 -an output.mp4
Aquí, 'an'
indica que no hay grabación de audio. En otras palabras, esta opción silenciará el audio.
El comando anterior deshará todas las banderas relacionadas con el audio.
9. Eliminación de transmisión de video de un archivo multimedia
Del mismo modo, si no desea la transmisión de video, puede eliminarla fácilmente del archivo multimedia usando 'vn'
bandera. vn significa sin grabación de video. En otras palabras, este comando convierte el archivo multimedia dado en un archivo de audio.
El siguiente comando eliminará el video del archivo multimedia dado.
$ ffmpeg -i input.mp4 -vn output.mp3
También puede mencionar la tasa de bits del archivo de salida usando '-ab'
como se muestra en el siguiente ejemplo.
$ ffmpeg -i input.mp4 -vn -ab 320 output.mp3
10. Extrayendo imágenes del video
Otra característica útil de FFmpeg es que podemos extraer fácilmente imágenes de un archivo de video. Esto podría ser muy útil si desea crear un álbum de fotos a partir de un archivo de video.
Para extraer imágenes de un archivo de video, use el siguiente comando:
$ ffmpeg -i input.mp4 -r 1 -f image2 image-%2d.png
Aquí,
-r
- Establecer la velocidad de fotogramas. Es decir, el número de fotogramas que se extraerán en imágenes por segundo. El valor predeterminado es25
.-f
- Indica el formato de salida, es decir, el formato de imagen en nuestro caso.image-%2d.png
- Indica cómo queremos nombrar las imágenes extraídas. En este caso, los nombres deberían comenzar comoimage-01.png
,image-02.png
,image-03.png
y así. Si usa%3d
, entonces el nombre de las imágenes comenzará comoimage-001.png
,image-002.png
y así sucesivamente.
11. Recortar vídeos
FFMpeg permite recortar un archivo multimedia dado en cualquier dimensión de nuestra elección.
La sintaxis para recortar un archivo de video se proporciona a continuación:
ffmpeg -i input.mp4 -filter:v "crop=w:h:x:y" output.mp4
Aquí,
input.mp4
- archivo de vídeo de origen.-filter:v
- Indica el filtro de video.crop
- Indica filtro de cultivo.w
- Ancho del rectángulo que queremos recortar del video de origen.h
- Altura del rectángulo.x
- x coordenada del rectángulo que queremos recortar del video de origen.y
- coordenada y del rectángulo.
Digamos que quieres un video con un ancho de 640
píxeles y una altura de 480
píxeles , desde la posición (200,150
) , el comando sería:
$ ffmpeg -i input.mp4 -filter:v "crop=640:480:200:150" output.mp4
Tenga en cuenta que recortar videos afectará la calidad. No haga esto a menos que sea necesario.
12. Convierte una parte específica de un video
A veces, es posible que desee convertir solo una parte específica (duración) del archivo de video a un formato diferente. Digamos, por ejemplo, que el siguiente comando convertirá el primer 10
segundos del archivo video.mp4 dado al formato video.avi.
$ ffmpeg -i input.mp4 -t 10 output.avi
Aquí especificamos el tiempo en segundos. Además, es posible especificar la hora en hh.mm.ss
formato.
13. Establece la relación de aspecto a video
Puede establecer la relación de aspecto de un archivo de video usando -aspect
marca como a continuación.
$ ffmpeg -i input.mp4 -aspect 16:9 output.mp4
Las relaciones de aspecto comúnmente utilizadas son:
- 16:9
- 4:3
- 16:10
- 5:4
- 2:21:1
- 2:35:1
- 2:39:1
14. Agregar imagen de póster a archivos multimedia
Puede agregar las imágenes del póster a sus archivos, para que las imágenes se muestren mientras se reproducen los archivos de audio o video. Esto podría ser útil para alojar archivos de audio en sitios web para compartir o alojar videos.
$ ffmpeg -loop 1 -i inputimage.jpg -i inputaudio.mp3 -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest output.mp4
15. Recortar un archivo multimedia utilizando las horas de inicio y finalización
Para recortar un video a un clip más pequeño usando los tiempos de inicio y finalización, podemos usar el siguiente comando.
$ ffmpeg -i input.mp4 -ss 00:00:50 -codec copy -t 50 output.mp4
Aquí,
--s
- Indica la hora de inicio del videoclip. En nuestro ejemplo, la hora de inicio es el segundo 50.-t
- Indica la duración total del tiempo.
Esto es muy útil cuando desea cortar una parte de un archivo de audio o video utilizando el tiempo de inicio y finalización.
Del mismo modo, podemos recortar el archivo de audio como se muestra a continuación.
$ ffmpeg -i audio.mp3 -ss 00:01:54 -to 00:06:53 -c copy output.mp3
16. Dividir archivos de audio/video en varias partes
Algunos sitios web le permitirán cargar solo un tamaño específico de video. Por ejemplo, Whatsapp solo permitirá 15
segundos videos para establecer como mensaje de estado para los usuarios en la India. En tales casos, puede dividir los archivos de video grandes en varias partes más pequeñas, como se muestra a continuación.
$ ffmpeg -i input.mp4 -t 00:00:30 -c copy part1.mp4 -ss 00:00:30 -codec copy part2.mp4
Aquí, -t 00:00:30
indica una parte que se crea desde el comienzo del video hasta el segundo 30 del video. -ss 00:00:30
muestra la marca de tiempo de inicio de la siguiente parte del video. Significa que la segunda parte comenzará desde el segundo 30 y continuará hasta el final del archivo de video original.
Recommended Download - Free Guide: "How to Start Your Own Successful Podcast"
17. Unir o fusionar múltiples partes de audio/video en una
FFmpeg también unirá las múltiples partes de video y creará un solo archivo de video.
Crear join.txt
archivo que contiene las rutas exactas de los archivos que desea unir. Todos los archivos deben tener el mismo formato (mismo códec). El nombre de la ruta de todos los archivos debe mencionarse uno por uno como se muestra a continuación.
file /home/sk/myvideos/part1.mp4 file /home/sk/myvideos/part2.mp4 file /home/sk/myvideos/part3.mp4 file /home/sk/myvideos/part4.mp4
Ahora, une todos los archivos usando el comando:
$ ffmpeg -f concat -i join.txt -c copy output.mp4
Si obtiene un error como el siguiente;
[concat @ 0x555fed174cc0] Unsafe file name '/path/to/mp4' join.txt: Operation not permitted
Agregue "-safe 0"
:
$ ffmpeg -f concat -safe 0 -i join.txt -c copy output.mp4
El comando anterior se unirá a part1.mp4
, part2.mp4
, part3.mp4
y part4.mp4
archivos en un solo archivo llamado "output.mp4"
.
Alternativamente, puede usar el siguiente comando de una sola línea para unir todos los archivos en un directorio. Vaya al directorio donde tiene archivos y ejecute el siguiente comando para unir los archivos llamados audio1.mp3
, audio2,mp3
y audio3.mp3
en output.mp3
.
$ ffmpeg -i "concat:audio1.mp3|audio2.mp3|audio3.mp3" -c copy output.mp3
18. Agregar subtítulos a un archivo de video
También podemos agregar subtítulos a un archivo de video usando FFmpeg. Descargue el subtítulo correcto para su video y agréguelo a su video como se muestra a continuación.
$ fmpeg -i input.mp4 -i subtitle.srt -map 0 -map 1 -c copy -c:v libx264 -crf 23 -preset veryfast output.mp4
19. Obtenga una vista previa o pruebe archivos de video o audio
Es posible que desee obtener una vista previa para verificar o probar si el archivo de salida se transcodificó correctamente o no. Para hacerlo, puedes jugarlo desde tu Terminal con el comando:
$ ffplay video.mp4
Del mismo modo, puede probar los archivos de audio como se muestra a continuación.
$ ffplay audio.mp3
20. Aumentar/disminuir la velocidad de reproducción de video
FFmpeg le permite ajustar la velocidad de reproducción de video.
Para aumentar la velocidad de reproducción del video, ejecute:
$ ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4
El comando duplicará la velocidad del video.
Para reducir la velocidad de su video, debe usar un multiplicador mayor que 1
. Para disminuir la velocidad de reproducción, ejecuta:
$ ffmpeg -i input.mp4 -vf "setpts=4.0*PTS" output.mp4
21. Aumentar/disminuir la velocidad de reproducción de audio
Para aumentar o disminuir la velocidad de reproducción de audio, use el "atempo"
filtro de sonido El siguiente comando duplicará la velocidad del audio.
$ ffmpeg -i input.mp4 -filter:a "atempo=2.0" -vn output.mp4
Puede usar cualquier valor entre 0.5
y 2.0
para audio.
22. Crear GIF animado
Usamos imágenes GIF en casi todas las redes sociales y profesionales para diversos fines. Usando FFmpeg, podemos crear fácil y rápidamente archivos de video animados.
La siguiente guía explica cómo crear un archivo GIF animado usando FFmpeg e ImageMagick en sistemas Linux y similares a Unix.
- Cómo crear un GIF animado en Linux
Lectura sugerida:
- Gifski:un codificador de GIF multiplataforma de alta calidad
23. Crea videos a partir de archivos PDF
Recopilé muchos archivos PDF, en su mayoría tutoriales de Linux, a lo largo de los años y los guardé en mi Tablet PC. A veces me da pereza leerlos desde la tablet.
Entonces, decidí crear un video a partir de archivos PDF y verlo en dispositivos de pantalla grande como un televisor o una computadora. Si alguna vez se preguntó cómo crear un archivo de película a partir de una colección de archivos PDF, la siguiente guía lo ayudará.
- Cómo crear un video a partir de archivos PDF en Linux
24. Rotar vídeos
Si tiene archivos de video con una orientación diferente (vertical u horizontal), puede rotarlos como se describe en la siguiente guía.
- Cómo rotar videos usando FFMpeg desde la línea de comandos
25. Convertir videos a formato de video de WhatsApp
WhatsApp no admite algunos videos. No puede compartirlos con sus contactos o configurarlos en el estado de WhatsApp. ¡No hay problema! Podemos convertir fácilmente videos en formato de video compatible con WhatsApp con FFmpeg como se describe en el siguiente enlace.
- Convertir videos al formato de video de WhatsApp con FFmpeg
26. Acercar y alejar videos
FFmpeg tiene muchos filtros útiles para realizar una tarea específica. Uno de ellos es zoompan. Usando el filtro zoompan, podemos acercar y alejar fácilmente cada X segundos periódicamente. Consulte el siguiente enlace para obtener más detalles:
- Cómo acercar y alejar videos usando FFmpeg
27. Obtener ayuda
En esta guía, he cubierto los comandos FFmpeg más utilizados. Tiene muchas más opciones diferentes para hacer varias funciones avanzadas. Para obtener más información al respecto, consulte la página del manual.
$ man ffmpeg
Lectura relacionada:
- Tutorial de Youtube-dl con ejemplos para principiantes
Y eso es todo. Espero que esta guía le haya brindado suficientes ejemplos de comandos de FFmpeg para comenzar a usar FFmpeg.