Manipular archivos de video MP4 usando ffmpeg

Instalar en ubuntu / debian

sudo add-apt-repository ppa:jonathonf/ffmpeg-4
sudo apt-get update
sudo apt-get install ffmpeg

Convertir un archivo .VOB a .MP

ffmpeg -i VTS*01*.VOB -vf yadif -c:v libx264 -preset slow -crf 19 -c:a aac -b:a 256k output.mp4

Para pegar dos videos sin perdida

ffmpeg -i "concat:input1.ts|input2.ts|input3.ts" -c copy output.ts

Para pegar varios videos en uno solo MP4

echo file video1.mp4 >  lista.txt
echo file video2.mp4 >> lista.txt
echo file video3.mp4 >> lista.txt

ffmpeg -f concat -i lista.txt -c copy output.mp4

Para cortar un video en un rango de tiempo determinado, por ejemplo del minuto 00:01:00 al minuto 00:20:00

ffmpeg -ss 00:01:00 -i input.mp4 -to 00:20:00 -c:v copy -c:a copy output.mp4

Para cortar alguna seccion de un mp4 por ejemplo este comando crea un nuevo vide del minuto 5 al minuto 25

ffmpeg -ss 00:05:00 -i input.mp4 -to 00:25:00 -c:v copy -c:a copy output.mp4

Este otro crea un video nuevo de 6 minutos a partir del minuto 3

ffmpeg -ss 00:03:00  -i input.mp4 -t 00:06:00 -c:v copy -c:a copy output.mp4

Comando para comprimir el video mp4 / -crf puede ser entre 0 y 50, en donde 0 es sin perdida de calidad y 50 es lo mas bajo

ffmpeg -i input.mp4 -vcodec libx265 -crf 28 output.mp4
ffmpeg -i input.mp4 -vcodec libx264 -crf 28 output.mp4

Quitar audio ffmpeg -i input.trec -c copy -an output.mp4

Remplazar audio ffmpeg -i input.mp4 -i new_audio.wav -c:v copy -map 0:v:0 -map 1:a:0 output.mp4

Extraer audio ffmpeg -i inoput.mp4 -vn -acodec copy audio.aac ffmpeg -i input.mp4 -q:a 0 -map a audio.mp3

Para rotar un video

ffmpeg -i input.mp4 -vf "transpose=1" output.mp4


0 - 90 grados en contra de las manecillas del reloj y refleja vertical
1 - 90 grados direccion a las manecillas del reloj
2 - 90 grados en contra de las manecillas del reloj
3 - 90 grados direccion a las manecillas del reloj y refleja vertical

Duración de un video / ffmpeg + bash

seconds=$(ffprobe -i video.mp4 -show_entries format=duration -v quiet -of csv="p=0" -sexagesimal)
time="${seconds%.*}"
echo time

ffmpeg es una herramienta muy conveniente, si quieres ver alguno usos alternativos e interesates puedes visitar el blog de Alexander Refsum Jensenius o para hacer conversiones de audio 2

Share on: