Как удалить несколько секунд из .mp4 файла с помощью ffmpeg?

Как удалить несколько секунд из .mp4 файла с помощью ffmpeg? У меня есть тестовый mp4 файл, и я хочу удалить 10-е с 11:00 до 11:10

6
задан 16 November 2017 в 12:08

2 ответа

Вы можете попытаться сделать это без перекодирования, но, поскольку вы можете вырезать только ключевые кадры, оно, возможно, не будет соответствовать желаемому времени вырезания, поэтому, если вам нужна точность, вам нужно перекодировать:

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
  • (а) обрезка позволит вам выбрать ваши клипы.
  • (а) setpts сбрасывает метки времени.
  • Concat объединяет клипы.

См. Документация фильтра FFmpeg для получения подробной информации о каждом фильтре.

4
ответ дан 23 November 2019 в 07:53

Я думаю, вам нужно разрезать видео на 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

У меня нет попробовал, дайте мне знать, если это работает.

1
ответ дан 23 November 2019 в 07:53

Другие вопросы по тегам:

Похожие вопросы: