ffmpeg - создает видео из фрейма изображения с началом и cout

18

Я создаю видео из рамки изображения, и она прекрасно работает. Проблема в том, что я не хочу использовать все изображения в моей папке. У меня в папке 200 кадров, но я хочу видео от 1 до 100

Как определить количество кадров или конец кадра?

ffmpeg -start_number n -i test_% d.jpg -vcodec mpeg4 test.avi

Я не могу найти как

Благодарность!

DarkPixel
источник
Я немного знаю об этой программе, но если она использует каждое изображение в определенной папке, почему бы не создать новую папку и поместить только те 100 кадров, которые вы хотите?
philipthegreat
2
Это будет моим "решением взлома", если не удастся сделать это с помощью ffmpeg :)
DarkPixel

Ответы:

29

Вы делаете это, указывая количество кадров, которые вы хотите:

-vframes 100  

Так эффективно это в вашем случае:

ffmpeg -start_number 1 -i test_%d.jpg -vframes 100 -vcodec mpeg4 test.avi

Вам может потребоваться указать другие параметры, такие как pix_fmt т. Д. В зависимости от других факторов.

Кроме того, обычно используется что-то вроде test_%05d.jpgнумерованной последовательности, имеющей предшествующие нули и 5 цифр. Если у вас его нет в этом формате, вам может понадобиться использовать шаблон сглаживания. Смотрите это .

Rajib
источник
3

Это код, который всегда работает для меня хорошо.

ffmpeg -i yourfile.mp4 -r 1 -ss 15 -t 16 -f image2 snapshot.jpg
                                ^     ^ 
                                ^     ^
                              start  end
                               time   time

время только в секундах. Если на 2 минуты больше, чем на катушке, то это 120. Один файл изображения всегда стоит одну секунду, таким образом, рассчитайте изображение желаемого с помощью этого подхода.

yourfile.mp4 = ваш видеоклип

snapshot.jpg = ваш новый файл изображения

ВАЖНО: оставьте image2 в покое. Это единственный способ получить то, что я хотел.

Faron
источник
4
Я ценю эту команду, потому что она работает со старой, ffmpegкоторую я должен использовать прямо сейчас; единственное, что не -tявляется «временем окончания», man ffmpegутверждает, что это «продолжительность»; таким образом, время окончания будет начало + продолжительность. Ура!
sdaau