Предположим, у меня 10 изображений, и я хочу объединить эти изображения в видео, как слайд-шоу.
Например, я хочу показать каждое изображение в течение 5 секунд, а затем продолжить следующее изображение еще на 5 секунд.
Если это возможно, будет идеально включать музыку и некоторый описательный текст.
Есть ли пример кода для этого, возможно, с библиотекой ffmpeg?
Моя первая мысль заключалась в том, чтобы выполнить команду ffmpeg с чем-то вроде этого.
Создание видео с изображений
ffmpeg может использоваться для сшивания нескольких изображений вместе в видео. Существует много вариантов, но для начала нужно использовать следующий пример. Он принимает все изображения с именами файлов XXXXX.morph.jpg, где X является числовым, и создает видео под названием «output.mp4». Параметр qscale указывает качество изображения (1 является самым высоким, а 32 является самым низким), а параметр «-r» используется для указания количества кадров в секунду.
ffmpeg -r 25 -qscale 2 -i% 05d.morph.jpg output.mp4
(Веб-сайт, на котором был снят этот рекламный блок, исчез. Ссылка удалена.)
Где 25 означает 25 изображений в секунду. Вы можете установить это значение 1 для небольшой (1 с) задержки или использовать десятичные значения, IE: 0,5 для 2-секундной задержки.
Затем вы можете объединить видео и аудиопоток с чем-то подобным.
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -b:a 128k final.mp4
Конечно, выберите подходящие кодеки. Если вы хотите, чтобы mp4 использовал libx264 для видео и aac (встроенный в ffmpeg и уже не «экспериментальный») для аудио.
Просто помните, что если вы решите использовать такой метод, который выводит ffmpeg, по умолчанию, для stderr, когда вы пытаетесь его прочитать. Он может быть перенаправлен на stdout, если вы предпочитаете.
Первое, что пришло мне в голову, – это вообразить . Я использовал его с PHP для большого количества манипуляций с изображениями, и я знаю, что он поддерживает чтение приличного количества видеоформатов, и в соответствии с этой ссылкой он также поддерживает запись некоторых.
да, ffmpeg – правильное решение для вас. я недавно сделал нечто похожее – видео-сайт с анимированными эскизами. Я использовал ffmpeg для компоновки изображений в аминированном gif. однако выход может быть любым, что вам нужно … К сожалению, в моих поисках в этом разделе я не нашел кода для примера, который бы совпадал со всеми вашими моментами, поэтому я предполагаю, что вам придется попробовать вручную с помощью ffmpeg .. в моем проекте я использовал php video toolkit http://sourceforge.net/projects/phpvideotoolkit/ в некоторых частях, чтобы сделать его немного проще …
Эффект blend можно использовать с ffmpeg:
ffmpeg -framerate 20 \ -loop 1 -t 0.5 -i 1.jpg \ -loop 1 -t 0.5 -i 2.jpg \ -loop 1 -t 0.5 -i 3.jpg \ -loop 1 -t 0.5 -i 4.jpg \ -c:v libx264 \ -filter_complex " \ [1:v][0:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b1v]; \ [2:v][1:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b2v]; \ [3:v][2:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b3v]; \ [0:v][b1v][1:v][b2v][2:v][b3v][3:v]concat=n=7:v=1:a=0,format=yuv420p[v]" -map "[v]" out.mp4
Вы должны проверить ссылку ниже для получения большего эффекта ffmpeg: D