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
Все еще с дублированными кадрами!
Наконец я попробовал третий вариант ffmpeg:ffmpeg -i ~/Desktop/file.mpg -vf fps=fps=29.97 ~/Desktop/file.mp4
За исключением того, что при выводе аудио / видео было не синхронизировано!
Какой вариант FPS я должен использовать?
2 ответа
Использование
ffmpeg -i ~/Desktop/file.mpg -vsync 0 ~/Desktop/file.mp4
Это пропускает дублирование.
-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