Я ничего не знаю о кодировании видео, у меня есть приложение, написанное на OpenGL, и я сохраняю созданные им кадры в png
изображения. Кадры из моего приложения со скоростью 7 кадров в секунду, и я пытаюсь создать видео из них.
Для этого я использую ffmpeg, как это
ffmpeg -framerate 30 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
который был взят с этого сайта , однако мне было интересно, возможно ли иметь видео, которое показывает анимацию на 30 FPS?
-framerate
параметр, чтобы получить желаемые результаты.Ответы:
Я использую код ниже, чтобы сделать то же самое.
Разбивая команду:
Это считывает входные данные со скоростью 30 к / с (
-framerate 30
опция) и кодирует их, используяlibx264
кодек с постоянным коэффициентом скорости 23 (-crf 23
опция).источник
Есть две частоты кадров: вход и выход.
По умолчанию частота кадров на входе равна 25, и на выходе будет использоваться та же частота кадров, что и на входе, если вы не укажете обратное.
Одинаковая частота кадров для ввода и вывода
Если вы хотите, чтобы вход и выход имели одинаковую частоту кадров, просто укажите входную частоту кадров. В этом примере будет установлена частота кадров 30000/1001 (видео NTSC):
Кроме того, в этом примере вы можете использовать
ntsc
вместо30000/1001
, но не использовать,29.97
потому что это не является точным или правильным. Смотрите другие псевдонимы частоты кадров .Поскольку частота кадров на входе по умолчанию равна 25, и если вы устанавливаете только частоту кадров на выходе, то кадры будут отбрасываться или дублироваться для компенсации. Вот почему частота кадров ввода устанавливается в этой ситуации.
Различная частота кадров для ввода и вывода
Иногда вы можете захотеть, чтобы частота входного и выходного кадров различалась. Например, вы можете захотеть вводить кадры с определенной скоростью, а затем дублировать или отбрасывать кадры, чтобы на выходе была другая частота кадров. Возможно, вы захотите сделать это из-за проблем совместимости с вашим контейнером выходного формата, вашим плеером и / или вашим устройством:
В этом примере кадры будут продублированы, чтобы перейти от 10 до 25. Вывод консоли сообщит вам, если кадры сбрасываются или дублируются.
В файл изображения Demuxer использует
-framerate
, в то время как частота кадров выхода устанавливается с помощью-r
.Возможно, вам придется добавить
-pix_fmt yuv420p
опцию в некоторых случаях, если вы выводите видео H.264 (ffmpeg
консольный вывод предупредит вас, если вам это нужно). Это будет использовать схему подвыборки цветности, которая совместима со всеми игроками.источник
Option framerate not found.
:-(-framerate
больше не существует. Я удалю свой комментарий, поскольку он действительно не имеет ничего общего с преобразованием серии изображений в видео с определенной частотой кадров.-framerate
существует. Он используется демультиплексорами изображений и rawvideo, а также некоторыми устройствами ввода, такими как x11grab и v4l2.-framerate
задокументирован? Я прочиталman ffmpeg
страницу, но не смог ее найти. Может быть, есть указатель?FFMPEG-DEVICES(1)
.будет достаточно в последней версии ffmpeg.
источник