Создание видео с 5 изображениями с эффектом fadeIn / out в ffmpeg
С 5 изображениями я должен создать видео 60 секунд в ffmpeg, каждое изображение должно отображаться в течение 15 секунд. Через 15 секунд первое изображение должно исчезнуть, и второе изображение должно исчезнуть, после того, как второе изображение должно исчезнуть, третье изображение должно исчезнуть в .etc. Прочтите, как я могу достичь этого, используя команды ffmpeg.
- Следующие фильтры не могли выбрать их форматы: Parsed_amerge_5 Рассмотрите возможность вставки фильтра формата (a) возле их ввода или вывода в FFmpeg
- Преобразование субтитров DVD в текст
- Как преобразовать весь каталог с помощью ffmpeg?
- Поворот видео с помощью FFmpeg
- Новый FFMPEG; " Внимание: данные не выровнены! Это может привести к снижению скорости "
- Создание стабильного видео с медленными изображениями с помощью FFmpeg
- Телевизионные записи WTV и DVR-MS, следует ли я де-чередовать или нет?
- Ffmpeg - Создайте видео с кадра изображения с началом и cout
Погружение в черный
Это не так тривиально, как вы, вероятно, ожидаете, но это определенно возможно. Пример, где каждое изображение отображается в течение 5 секунд, и каждый из них имеет затухание, которое длится 1 секунду.
ffmpeg \ -loop 1 -t 5 -i input0.png \ -loop 1 -t 5 -i input1.png \ -loop 1 -t 5 -i input2.png \ -loop 1 -t 5 -i input3.png \ -loop 1 -t 5 -i input4.png \ -filter_complex \ "[0:v]fade=t=out:st=4:d=1[v0]; \ [1:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v1]; \ [2:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v2]; \ [3:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v3]; \ [4:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v4]; \ [v0][v1][v2][v3][v4]concat=n=5:v=1:a=0,format=yuv420p[v]" -map "[v]" out.mp4
Используемые опции и фильтры:
-
-t
чтобы установить продолжительность в секундах каждого входа. -
fade
исчезают и исчезают.d
– длительность затухания. Когда он начинается. -
concat
для объединения (или объединения) каждого изображения. -
format
для вывода схемы субсэмплирования цветности, которая совместима с игроками, не поддерживающими FFmpeg, при кодировании с помощью libx264 (по умолчанию для выхода MP4, если он поддерживается вашей сборкой).
Crossfade
Использование ffmpeg
Необработанный пример с использованием фильтра blend
. Crossfade устанавливается на 0,5 секунды.
ffmpeg \ -loop 1 -t 1 -i 001.png \ -loop 1 -t 1 -i 002.png \ -loop 1 -t 1 -i 003.png \ -loop 1 -t 1 -i 004.png \ -loop 1 -t 1 -i 005.png \ -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]; \ [4:v][3: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)))'[b4v]; \ [0:v][b1v][1:v][b2v][2:v][b3v][3:v][b4v][4:v]concat=n=9:v=1:a=0,format=yuv420p[v]" -map "[v]" out.mp4
- Вероятно, вы можете устранить «прокладки» изображения, используя более подходящее выражение в
blend
.
Использование melt
Использование melt
из MLT Multimedia Framework может быть проще для этой задачи:
melt -verbose \ -profile atsc_720p_25 \ 001.png out=50 \ 002.png out=75 -mix 25 -mixer luma \ 003.png out=75 -mix 25 -mixer luma \ 004.png out=75 -mix 25 -mixer luma \ 005.png out=75 -mix 25 -mixer luma \ -consumer avformat:output.mp4 vcodec=libx264 an=1
-
Используйте профиль, который соответствует вашим входным файлам. Вы можете перечислить профили с профилями
melt -query profiles
и получить информацию о конкретном профиле, таком какmelt -query "profile=atsc_720p_25"
. -
out
устанавливает продолжительность каждого изображения. Значение находится в кадрах. В этом примере используется профиль, который устанавливает частоту кадров 25, поэтому 25 кадров равны 1 секунде. -
mix
устанавливает длительность выцветания. Значение находится в кадрах. -
mixer
устанавливает тип смеси. -
Для получения дополнительной информации см. Документацию MLT и документацию о расплавлении .
Я написал общий сценарий bash, который берет путь к папке изображений и выводит видео с кроссфейдом с ffmpeg:
https://gist.github.com/anguyen8/d0630b6aef6c1cd79b9a1341e88a573e
Скрипт по существу смотрит на изображения в папке и выводит команду, похожую на ответ от @LordNeckbeard выше, и выполняет эту команду. Этот скрипт помогает, когда у вас много изображений в папке и вы не хотите вручную вводить команду с депрессией.