Очень досадная ситуация...
У меня есть видео 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