Я пытался удалить пару секунд из начала некоторых файлов mp4 без перекодирования. Сначала я использовал выходной поиск, т.е.
E:\>ffmpeg -i input.mp4 -ss 00:00:05 -t 00:01:00 -c copy output.mp4
Однако это привело к замораживанию кадра на несколько секунд в начале выходного файла (я предполагаю, что это было связано с поиском ключевого кадра, поэтому я попробовал добавить флаг -copyinkf, но это не помогло), поэтому я попытался использовать поиск ввода, т. е.
E:\>ffmpeg -ss 00:00:05 -i input.mp4 -t 00:01:00 -c copy output.mp4
Полученный выходной файл был воодушевляющим, так как воспроизводился плавно и точно в начале, за исключением информации о длительности выходного файла, которая отличалась от фактического значения. Предполагалось, что указанная выше команда приведет к получению видеофайла с длительностью 00:01:00. Однако вместо этого я получил файл с длительностью 00:01:05, который содержит длинное видео 00:01:00. Я также пробовал с большим значением поиска, и все получилось просто отлично.
E:\>ffmpeg -ss 00:00:10 -i input.mp4 -t 00:01:00 -c copy output10.mp4
E:\>ffmpeg -ss 00:00:15 -i input.mp4 -t 00:01:00 -c copy output15.mp4
На этом изображении показана продолжительность выходных файлов.
Я не знаю, в чем разница между ними, и надеюсь, что кто-то сможет мне в этом помочь. Я буду признателен за вашу помощь.
Примечания:
- Версия ffmpeg N-93439-gb073fb9eea, я пробовал некоторые более старые версии и получал тот же результат.
- Видео- и аудиокодеки входного файла — avc и aac соответственно.