При создании видео из последовательности изображений с использованием ffmpeg я обнаружил, что получаю видео одинаковой длины, независимо от того, кодируется ли оно как 30fps или 60fps. Учитывая, что в моем текущем случае 6329 файлов изображений, следующие две команды создают видеофайлы одинаковой длины:

1. ffmpeg -pattern_type glob -i '*.png' -r 30 -pix_fmt yuv420p out-30fps.mp4
2. ffmpeg -pattern_type glob -i '*.png' -r 60 -pix_fmt yuv420p out-60fps.mp4

С учетом вышесказанного ffprobe показывает, что видео 1 имеет формат 00:04:13.17 и кодируется со скоростью 30 кадр / с, а видео 2 - 00:04:13.15 и кодируется со скоростью 60 кадр / с. При загрузке в Quicktime Player оба видео имеют одинаковую длину и скорость.

Итак, два вопроса:

  1. Меня смущает общая продолжительность видео, так как 4m13s - это 253 секунды. При 30 кадрах в секунду 253 секунды должны потребовать 7590 кадров, а не 6329.

  2. Что требуется для использования существующей последовательности кадров, как если бы она была источником 60 кадров в секунду вместо 30? Или, другими словами, как сделать так, чтобы конечное видео имело вдвое больше кадров / секунду во время воспроизведения?

1 ответ1

2

Для последовательностей изображений ffmpeg предполагает, что входной поток имеет частоту кадров 25, если не указано иное. Итак, используйте

ffmpeg -pattern_type glob -framerate 60 -i '*.png' -r 60 -pix_fmt yuv420p out-60fps.mp4

В качестве опции вывода -r 60 создается поток с постоянной частотой кадров 60 кадров в секунду. Если входной поток имеет другую скорость, он будет дублировать или отбрасывать кадры для соответствия этой скорости.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .