Я хочу использовать ffmpeg, чтобы вырезать видеофайл в определенном кадре.
Давайте возьмем это видео. Сначала я получаю кадр через 25 секунд:
ffmpeg -i sintel_trailer-1080p.mp4 -ss 25 -vframes 1 25.png
Обратите внимание, что я использую опцию postfix -ss
, поэтому поиск должен быть точным.
Вот мое изображение:
Затем я вырезал видео за 25 секунд, используя потоковое копирование, и проверил его первый кадр:
ffmpeg -i sintel_trailer-1080p.mp4 -ss 25 -c copy cut.mp4
ffmpeg -i cut.mp4 -vframes 1 0.png
Первый кадр отличается:
Но если я заменю опцию потокового копирования на другой формат или видеокодек, первый кадр будет правильным:
ffmpeg -i sintel_trailer-1080p.mp4 -ss 25 -f avi cut.avi
ffmpeg -i cut.avi -vframes 1 0_1.png
Можно ли вообще получить точный поиск кадров в режиме потокового копирования?
В моем приложении пользователь должен иметь возможность выбрать кадр и запустить процесс, который будет вырезать видео именно в этом кадре. В этом случае мне не нужно конвертировать видео, но в то же время я не могу сделать режим потокового копирования точным.