
Я хочу вырезать фильм, указав время начала и окончания, используя ffmpeg, у меня есть задание времени начала, работа будет, но я хочу задать время окончания, наконец, конец 50 секунд назад. Я не знаю, как настроить.
ffmpeg -i demo.mp4 -ss 00:01:20 -acodec libfaac -ab 128k -vcodec mpeg4 -b 800k -mbd 2 -cmp 2 -subcmp 2 new_demo.mp4
решение1
Разумный метод — проанализировать считывание ffmpeg входной информации на предмет длительности, а затем предоставить -t
значение duration - start time - 50s
.
Безумный метод — подать входные данные дважды и использовать фильтр наложения:
ffmpeg -ss 2:10 -i demo.mp4 -ss 00:01:20 -i demo.mp4 -filter_complex overlay=shortest=1[v] -map [v] -map 1:a -shortest -acodec libfaac -ab 128k -vcodec mpeg4 -b 800k -mbd 2 -cmp 2 -subcmp 2 new_demo.mp4
Первый вход имеет значение ss, равное времени начала + размеру конечной части видео, которую нужно вырезать.
Второй входной параметр содержит значение ss вашего начального времени.
Основная идея заключается в том, что фильтр наложения может быть выполнен так, чтобы он завершался, когда заканчивается самый короткий вход. Первому входу присваивается значение ss, так что наложение завершается, когда достигается интервал от end.