Как удалить несколько секунд из .mp4 файла с помощью ffmpeg? У меня есть тестовый mp4 файл, и я хочу удалить 10-е с 11:00 до 11:10
Вы можете попытаться сделать это без перекодирования, но, поскольку вы можете вырезать только ключевые кадры, оно, возможно, не будет соответствовать желаемому времени вырезания, поэтому, если вам нужна точность, вам нужно перекодировать:
ffmpeg -i input.mp4 -filter_complex \
"[0:v]trim=end=660,setpts=N/FRAME_RATE/TB[v0]; \
[0:a]atrim=end=660,asetpts=N/SR/TB[a0]; \
[0:v]trim=start=670,setpts=N/FRAME_RATE/TB[v1]; \
[0:a]atrim=start=670,asetpts=N/SR/TB[a1]; \
[v0][a0][v1][a1]concat=n=2:v=1:a=1[v][a]" \
-map "[v]" -map "[a]" output.mp4
См. Документация фильтра FFmpeg для получения подробной информации о каждом фильтре.
Я думаю, вам нужно разрезать видео на 2 части, а затем объединить их. первое значение времени - это начальная точка, второе значение времени - длина видео, которое вы хотите вырезать. Например, ниже первый отрезок начинается в 00:00:00 и длится 11 минут, второй отрезок начинается в 11 минут 10 секунд, а продолжительность составляет 10 минут.
резка:
ffmpeg -i test.mp4 -ss 00:00:00 -t 00:11:00 -acodec copy -vcodec copy test1.mp4
ffmpeg -i test.mp4 -ss 00:11:10 -t 00:10:00 -acodec copy -vcodec copy test2.mp4
слияние:
cat test1.mp4 test2.mp4 >> test3.mp4
У меня нет попробовал, дайте мне знать, если это работает.