Подтвердить что ты не робот

Avconv: сделать видео из подмножества на изображениях

Я пытаюсь сделать кучу png в видео с помощью avconv, png пронумерованы как filename_<number>, поэтому я обычно просто использую команду:

avconv -r 10 -i filename_%d.png -b:v 1000k test.mp4

Теперь я хочу сделать видео из подмножества файлов filename_8 - filename_50, скажем, поэтому я скопировал эти файлы в новый каталог и попробовал ту же команду, но теперь я получаю сообщение об ошибке:

filename_%d.png: No such file or directory

Я предполагаю, что это потому, что нумерация не начинается с 1?

Как я могу это достичь?

4b9b3361

Ответ 1

avconv -r 10 -start_number 8 -i filename_%d.png -b:v 1000k test.mp4

Для параметра -start_number вам понадобится последняя версия avconv. это не в версии 0.8.x. В качестве альтернативы вы можете использовать недавнюю версию ffmpeg. Или переименуйте файлы, чтобы начать с номера от 0 до 4, поскольку он будет проверять эти имена по умолчанию.

Ответ 2

Вы можете конкатенировать файлы с помощью cat, а затем использовать demoxer image2pipe, чтобы читать их в avconv. Как cat filename* | avconv -f image2pipe -i - ...

Ответ 3

Проверьте это; согласно ffmpeg, это то, как они это делают, и это работает.

  • Сначала переименуйте свои фотографии, чтобы следовать числовой последовательности. Для Пример: img1.jpg, img2.jpg, img3.jpg, ...
  • Затем вы можете запустить:

    ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg
    

    Обратите внимание, что %d заменяется номером изображения.

    img%03d.jpg означает последовательность img001.jpg, img002.jpg и т.д.

  • Используйте параметр '-start_number, чтобы объявить начальный номер для последовательность. Это полезно, если ваша последовательность не начинается с img001.jpg, но все еще находится в числовом порядке. Следующие пример начинается с img100.jpg:

    ffmpeg -f image2 -start_number 100 -i img%d.jpg /tmp/a.mpg
    
  • Если у вас есть большое количество изображений для переименования, вы можете использовать следуя команде для облегчения бремени. Команда, используя bourne синтаксис оболочки, символически связывает все файлы в текущем каталоге которые соответствуют * jpg в каталоге /tmp в последовательности img001.jpg, img002.jpg и т.д.

    x=1;  
    for i in *jpg;  
    do counter=$(printf %03d $x);  
    ln -s "$i" /tmp/img"$counter".jpg;  
    x=$(($x+1));