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

Ffmpeg images-to-video script кто-нибудь?

Я хочу взять кучу изображений и сделать из них слайд-шоу. Будет приложение для этого, не так ли? Да, довольно много кажется. Проблема в том, что я хочу, чтобы слайды синхронизировались с музыкой, и все приложения, которые я видел, позволяют показывать только каждый слайд за несколько секунд. Я хочу, чтобы они показывали для кратных 1.714285714 секунд, чтобы соответствовать 140 уд/мин.

Инструменты, которые я видел, как правило, имеют ffmpeg под капотом, поэтому, предположительно, это можно сделать с помощью script. Но у ffmpeg есть много вариантов... Я надеюсь, что у кого-то будет что-то близкое.

У меня будет до 100 слайдов, те, которые должны отображаться в течение 3.428571428 секунд или, как мне кажется, я могу просто показать дважды.

4b9b3361

Ответ 1

Вы можете извлекать изображения из видео или создавать видео со многих изображения:

Для извлечения изображений из видео:

ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg

Это позволит извлечь один видеофрагмент в секунду из видео и будет вывод их в файлы с именем "foo-001.jpeg", "foo-002.jpeg" и т.д. Изображения будет изменен, чтобы соответствовать новым значениям WxH. Если вы хотите извлечь просто ограниченное количество кадров, вы можете использовать указанную выше команду в комбинация с параметрами -vframes или -t или в сочетании с -ss чтобы начать извлечение с определенного момента времени. Для создания видео из многих изображений:

ffmpeg -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi

Синтаксис foo-%03d.jpeg указывает на использование десятичного числа, составленного из трех цифр, заполненных нулями, чтобы выразить порядковый номер. Это это тот же синтаксис, поддерживаемый функцией printf C, но только форматы, принимающие нормальное целое, подходят.

Это выдержка из документации, для получения дополнительной информации на странице документации ffmpeg.

Ответ 2

Для самых последних версий ffmpeg (примерно с конца 2013 года)

Следующее создаст видео слайд-шоу (используя видеокодек libx264 или webm) из всех png-изображений в текущем каталоге. Команда принимает имена изображений , пронумерованные и упорядоченные последовательно (img001.jpg, img002.jpg, img003.jpg) , а также случайный набор изображений.

(каждое изображение будет иметь продолжительность 5 секунд)

ffmpeg -r 1/5 -pattern_type glob -i '*.png' -c:v libx264 out.mp4   # x264 video
ffmpeg -r 1/5 -pattern_type glob -i '*.png'              out.webm  # WebM video

Для более старых версий ffmpeg

Это создаст видео слайд-шоу (используя видеокодек libx264 или webm) из серии png-изображений под названием img001.png, img002.png, img003.png,...

(каждое изображение будет иметь продолжительность 5 секунд)

ffmpeg -f image2 -r 1/5 -i img%03d.png -vcodec libx264 out.mp4     # x264 video
ffmpeg -f image2 -r 1/5 -i img%03d.png                 out.webm    # WebM video

Возможно, вам придется немного изменить следующие команды, если у вас есть очень новая версия ffmpeg

Это создаст слайд-шоу, в котором каждое изображение будет длиться 15 секунд:

ffmpeg -f image2 -r 1/15 -i img%03d.png out.webm

Если вы хотите создать видео из одного изображения, это будет делать (продолжительность видео длится 30 секунд):

ffmpeg -loop 1 -f image2 -i img.png -t 30 out.webm

Если у вас нет нумерованных и упорядоченных изображений (img001.jpg, img002.jpg, img003.jpg), а скорее случайная группа изображений, вы можете попробовать следующее:

cat *.jpg | ffmpeg -f image2pipe -r 1 -vcodec mjpeg -i - out.webm

или для изображений png:

cat *.png | ffmpeg -f image2pipe -r 1 -vcodec png -i - out.webm

Это будет читать все изображения jpg/png в текущем каталоге и записывать их один за другим, используя канал, на вход ffmpeg, из которого выйдет видео.

Важно: Все изображения в серии должны быть одного размера (размеры x и y) и формат.

Объяснение:. Говоря FFmpeg, чтобы установить параметр FPS входного файла (кадры в секунду) на некоторое очень низкое значение, мы сделали дубликаты кадров FFmpeg на выходе, и поэтому мы достигли отображения каждого изображения для некоторое время на экране. Вы видели, что вы можете установить любую фракцию как частоту кадров. 140 ударов в минуту будет -r 140/60.

Источник: FFmpeg wiki


Для создания изображений из видео используйте

ffmpeg -i video.mp4 img%03d.png

Это создаст изображения с именем img001.png, img002.png, img003.png,...

Ответ 3

Я воспользовался этим:

mencoder "mf://html/*.png" -ovc x264 -mf  fps=1.16666667  -o output.avi

и затем изменить частоту дискретизации в LiVES.

загрузите более подробную информацию (и видео с конечным результатом) по адресу: http://hyperdata.org/hackit/ (зеркало)