Я пытаюсь создать синтетическое c видео с помощью FFmpeg.
Я хочу, чтобы частота кадров составляла 10 кадров в секунду, и я хочу, чтобы счетчик testsrc
продвигался каждый кадр.
Проблема:
Когда выходной файл mp4
, первый видеокадр дублируется 10 раз.
Вопрос:
Это ошибка в FFmpeg или проблема в аргументах командной строки?
Я использую следующую команду:
ffmpeg -y -r 10 -f lavfi -i testsrc=duration=10:size=192x108:rate=1 -c:v libx264 vid.mp4
- Причина установки
rate=1
заключается в том, что счетчик перемещается в каждом кадре.
Сгенерированный Схема источника предназначена для продвижения счетчика каждую секунду. - Причиной установки
-r 10
перед входом является «повторное смешивание» видео со скоростью 10 кадров в секунду и игнорирование временных меток входа.
Я нашел синтаксис в следующем посте: Использование ffmpeg для изменения частоты кадров :
Remux с новой частотой кадров
ffmpeg -y -r 24 -i seeing_noaudio.h264 -c copy seeing.mp4
Когда выходной файл AVI
работает правильно (первый кадр не дублируется):
ffmpeg -y -r 10 -f lavfi -i testsrc=duration=10:size=192x108:rate=1 -c:v libx264 vid.avi
При генерации AVI
при 1 к / с и Remux на mp4
при 10 к / с возникает другая проблема:
Первый и второй кадры дублируются дважды, а последний кадр отсутствует.
Вот команды:
ffmpeg -y -f lavfi -i testsrc=duration=10:size=92x54:rate=1 -c:v libx264 -r 1 vid.avi
ffmpeg -y -r 10 -i vid.avi -c:v copy -r 10 vid.mp4
Анализ видео mp4
на PNG
изображения:
ffmpeg -i vid.mp4 %02d.png
Результат:
Первый кадр дублируется 10 раз.
Анализ видео AVI
для PNG
изображений:
Результат:
Ожидается 10 кадров.