1

Может ли кто-нибудь помочь мне преобразовать поток видео со скоростью 30 кадров в секунду в 24 кадра в секунду?

Оригинальный материал - фильм. Кажется, что он снимается со скоростью 24 кадра в секунду, потому что поток состоит из 4 кадров, за которыми следует один дубликат, а затем снова. 4 кадра, 1 дублирование, 4 кадра, 1 дублирование, 4 кадра, 1 дублирование и т.д., Делая 24 кадра в секунду и 6 дубликатов в секунду.

Когда я прошу ffmpeg преобразовать этот материал в 24 кадра в секунду, происходят странные вещи.

Когда я конвертирую 20-секундный клип на 3 минуты в фильм, в mpeg2video со скоростью 24 кадра в секунду (используя флаг -r 24), я получаю плавный фильм, за исключением одного из первых кадров, который является дубликатом. Однако, когда я сначала пытаюсь скопировать тот же клип в отдельный файл, а затем пытаюсь преобразовать его в mpeg2video, я получаю движение staccato из нескольких кадров, затем из-за дублирования, затем из-за еще нескольких кадров, из-за дублирования и т.д. И т.д. И т.д. ., с, казалось бы, случайными числами кадров между дупсами. Итак - тот же клип, но плавный в первом случае и стаккато во втором!

Однако, когда я использую ffmpeg для преобразования точно такого же файла в x264, я получаю такое же движение стаккато в течение примерно 30 кадров, а затем оно становится абсолютно плавным!

Что здесь может происходить?

Есть ли какой-то способ специально сказать ffmpeg, чтобы он использовал только 4 кадра, затем пропустить один и повторить все это в фильме?

Спасибо.

1 ответ1

0

Существует конкретная проблема, для которой вы можете использовать фильтр выбора, или общая проблема удаления дублирующихся кадров, присутствующих в неизвестном шаблоне, представленном во время телесинного процесса.

Для первого

ffmpeg -i in.mp4 -vf select='mod(n+1,5)',setpts=N/24/TB out.mp4

Для последнего может быть полезен фильтр mpdecimate

ffmpeg -i in.mp4 -vf mpdecimate,setpts=N/24/TB out.mp4

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .