Создание видео с 5 изображениями с эффектом fadeIn / out в ffmpeg

с 5 изображений, которые я должен создать видео 60 секунд в ffmpeg, каждое изображение должно отображаться в течение 15 секунд. после 15 секунд, первое изображение должно исчезать и 2 изображения исчезать, после этого 2-ое изображение должно исчезать, 3-й изображение должно исчезать..п. Пожалуйста, направьте меня, как я могу достичь этого с помощью команд ffmpeg.

22
задан slhck
12.03.2023 0:54 Количество просмотров материала 3478
Распечатать страницу

2 ответа

Dip to black

fade example

простой пример

пример, где каждое изображение отображается в течение 5 секунд и исчезают, что длится 1 секунду. каждый входной сигнал изображения имеет такие же ширину, высоту, и коэффициент сжатия образца. если они различаются по размеру см. Пример #3.

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

аудио

то же, что и выше, но со звуком:

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 \
-i audio.m4a \
-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]" -map 5:a -shortest out.mp4

для входных изображений с переменным или произвольным размеры

как в первом примере, но с входными изображениями, которые различаются по ширине и высоте. Они будут проложены для приспособления внутри коробка 1280x720:

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]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fade=t=out:st=4:d=1[v0]; \
 [1:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v1]; \
 [2:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v2]; \
 [3:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v3]; \
 [4:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,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 установить длительность в секундах каждого входа.

  • scale С pad для приспособления входных изображений в конкретных, одинакового размера (в Примере #3).

  • fade исчезать и выход. d продолжительность исчезать. st, когда он начинается.

  • concat объединить (или "присоединиться") каждый изображение.

  • format для вывода схемы цветности, совместимой с проигрывателями, не основанными на FFmpeg, при кодировании с libx264 (кодировщик по умолчанию для вывода MP4, если он поддерживается вашей сборкой).

Кроссфейд

crossfade example

используя 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 и Документация По Расплаву для получения дополнительной информации.

40
отвечен LordNeckbeard 2023-03-13 08:42

Я написал сценарий general bash, который берет путь к папка изображений, и выводит кроссфейд видео с ffmpeg:

https://gist.github.com/anguyen8/d0630b6aef6c1cd79b9a1341e88a573e

скрипт, по сути, смотрит на изображения в папке и выводит команду, похожую на ответ @LordNeckbeard выше, и выполняет команду. Этот скрипт помогает, когда у вас есть много изображений в папке и не хочу вручную введите депрессивно длинную команду.

1
отвечен anh_ng8 2023-03-13 10:59

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх