Я знаю, что это может быть невозможно, но я, по крайней мере, был бы признателен за понимание того, что происходит.
У меня есть видео с принудительными ключевыми кадрами каждые 2 секунды. В идеале я надеялся, что смогу получить срезы с идеальным кадром без перекодирования. Например:
ffmpeg -ss 00:00:00 -i original.mp4 -t 2 -c copy slices_0.mp4
ffmpeg -ss 00:00:02 -i original.mp4 -t 2 -c copy slices_1.mp4
ffmpeg -ss 00:00:04 -i original.mp4 -t 2 -c copy slices_2.mp4
...
Это не совсем похоже на работу.
Если углубиться в это, похоже, что первый срез выполнен с точностью до кадра, но все, что после этого имеет небольшое смещение (у него могут быть другие проблемы, но я сейчас просто сосредоточусь на этом). Первый кадр выглядит нормально:
# same output
ffmpeg -ss 00:00:03 -i original.mp4 -vframes 1 o.png && md5 o.png
ffmpeg -ss 00:00:00 -i slices_1.mp4 -vframes 1 1.png && md5 1.png
Но все после этого выключено
# not the same output
ffmpeg -ss 00:00:04 -i original.mp4 -vframes 1 o.png && md5 o.png
ffmpeg -ss 00:00:01 -i slices_1.mp4 -vframes 1 1.png && md5 1.png
Что бы я ни делал, я получаю тот же результат. Если я посмотрю на PTS для оригинального кадра 60, я получу 2.002000 (вместо 2). Но, даже если я использую это для своего среза, я получаю такое же смещение.
В чем дело?
(Вероятно, не реализовано, но мне также любопытно, почему первый кадр 0_slices.mp4 имеет смещение PST/DST, хотя оригинал не имеет)