ffmpeg отсутствуют кадры изображения в сгенерированном видео из изображений

Аналогичный вопрос здесь, но пока нет ответа.

Проблема:

Я комбинирую изображения (.png) одинакового разрешения/размера (все они взяты из одного и того же matplotlib.pyplot), но в полученном видео отсутствуют несколько кадров.

Команда:

ffmpeg -f image2 -r 1 -i .\\images\\image%02d.png -c:v libx264 -r 30 .\\images\\output.mp4

Результирующее видео

  • Продолжительность 0:09
  • Отсутствует более половины изображений

Картинки

  • .\images
    • image00.png
    • изображение01.png
    • изображение02.png
    • изображение03.png
    • изображение04.png
    • изображение05.png
    • изображение06.png
    • изображение07.png
    • . . .

Заметки:

Я следовал примерам из здесь. Я новичок в использовании ffmpeg, поэтому я не могу быть полностью уверен в том, что означает каждый из параметров командной строки, которые я использовал, хотя у меня есть довольно хорошая идея.

Спасибо, любая помощь/совет/предложения будут очень признательны. Я также готов предоставить дополнительную информацию, которая может помочь решить эту проблему.


person sihrc    schedule 04.08.2013    source источник


Ответы (2)


Иногда это происходит, если изображения не все одинакового размера. Ваша команда выглядит хорошо для меня.

person David Elliman    schedule 04.08.2013
comment
Спасибо за ваш ответ! Они одного размера. На самом деле я совершил глупую ошибку, которую собираюсь исправить, ответив на свой вопрос. - person sihrc; 04.08.2013

Я сохранил свои изображения как:

Картинки

.\images
    image00.png
    image01.png
    image02.png
    image03.png
    image04.png
    image05.png
    image06.png
    image08.png
    image09.png
    image010.png #<---- crap. all hells gone loose now.
    image011.png
    image012.png
    image013.png
    image014.png
    image015.png

Потому что я сохранил их в цикле for и попытался сделать какой-то причудливый скрипт для генерации имен, который с треском провалился. Для справки, это код, который работает:

for i in range(len(frames)):
    fig.savefig('images\\' + 'image'+ ('{0:0'+str(len(str(len(frames))))+'}').format(i)+'.png')
person sihrc    schedule 04.08.2013
comment
В будущем, чтобы избежать проблем с заполнением, вы можете использовать форматирование строковых чисел, например %5d, для создания имен файлов. - person FlavorScape; 06.08.2013
comment
Что-то вроде print '%4d' % 10 дает мне '10', а не '0010'. - person sihrc; 07.08.2013
comment
%02d добавит один. я забыл упомянуть, что это формат строки с двумя параметрами. используйте 0 вместо пробелов для заполнения поля, когда указан параметр ширины. Например, printf(%2d, 3) дает 3, а printf(%02d, 3) дает 03. Таким образом, %04d будет состоять из 3 ведущих нулей. - person FlavorScape; 08.08.2013