ffmpeg Дублирование кадров

ffmpeg Дублирование кадров

Очень досадная ситуация...
У меня есть видео MPG2 с частотой кадров 29,97, но при конвертации в MP4 кадры дублируются.

Эта команда (прямое преобразование, без опций):
ffmpeg -i ~/Desktop/file.mpg ~/Desktop/file.mp4
вызывает дублирование кадров...

При установке частоты кадров с помощью:
ffmpeg -i ~/Desktop/file.mpg -framerate 29.97 ~/Desktop/file.mp4
Тоже не работает!

Приводит меня к попытке:
ffmpeg -i ~/Desktop/file.mpg -r 29.97 ~/Desktop/file.mp4
Все еще с дублированием кадров!

Наконец я попробовал ffmpeg3-йопция частоты кадров!:
ffmpeg -i ~/Desktop/file.mpg -vf fps=fps=29.97 ~/Desktop/file.mp4

За исключением того, что при выводе аудио/видео были рассинхронизированы!

Какой вариант FPS мне следует использовать?

решение1

Использовать

ffmpeg -i ~/Desktop/file.mpg -vsync 0 ~/Desktop/file.mp4

Это позволяет избежать дублирования.

-vsync passthroughявляется синонимом -vsync 0.

решение2

-vsyncв настоящее время не рекомендуется, поэтому вместо него следует использовать -fps_mode.

По умолчанию это fps_mode, autoпоэтому он может автоматически изменить ваш fps. Например, исходный источник имеет переменную частоту кадров, но ffmpeg может решить автоматически изменить ее на постоянную частоту кадров, что может привести к дублированию и пропуску кадров.

Чтобы предотвратить изменение частоты кадров, установите -fps_mode passthrough. (Это то же самое, что -vsync 0и или -vsync passthrough).

Для получения более подробной информации см.документация ffmpeg.

ffmpeg -i ~/Desktop/file.mpg -fps_mode passthrough ~/Desktop/file.mp4

Связанный контент