ffmpeg добавляет ненужные кадры к выходному видео

#video #ffmpeg

#Видео #ffmpeg

Вопрос:

У меня есть серия изображений в формате png, которые мне нужно преобразовать в видео, воспроизводимое со скоростью 60 кадров в секунду.

 ffmpeg -y -i frames/M.png -vcodec libx264 -r 60 video.avi
  

Приведенный выше код приводит к тому, что видео имеет 60 кадров в секунду, но он использует один и тот же кадр два или три раза, что фактически приводит к получению вдвое большего видео с частотой 25 кадров в секунду. Что я делаю не так?

Ответ №1:

Некоторые параметры ffmpeg зависят от положения. ffmpeg дает вам подсказку через свою справку:

 # ffmpeg -h
...
Global options (affect whole program instead of just one file:
-loglevel loglevel  set logging level
...
Per-file main options:
-f fmt              force format
...
# 
  

-r включен один из этих параметров, которые указаны для каждого файла.

Чтобы адаптировать параметр к входному файлу, вы должны записать -r аргумент перед соответствующим -i аргументом.

Итак, следующее должно сработать для вас (работало для меня с кодировщиком mpeg4):

 ffmpeg -y -r 60 -i frames/M.png -vcodec libx264 video.avi
  

Вы также можете попробовать, поскольку кодировщик libx264 может не адаптировать частоту кадров:

 ffmpeg -y -r 60 -i frames/M.png -vcodec libx264 -r 60 video.avi
  

Комментарии:

1. Спасибо. Я читал, что -r это зависит от положения, но никогда не пробовал использовать его дважды… Теперь я получаю странный результат с 162 кадрами, удаленными с момента переключения входных файлов с rgba на rgba64be , но кадры после отброшенных остаются по-прежнему rgba64be , и они в полном порядке…