Опустіть до чорного
Основний приклад
Приклад, де кожне зображення відображається протягом 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
Для вхідних зображень з різними або довільними розмірами
Як і в першому прикладі, але з вхідними зображеннями, які відрізняються шириною x висотою. Вони будуть розміщені так, щоб вони вмістилися в поле 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
с колодки для розміщення вхідних зображень у певний, рівномірний розмір (використовується в прикладі # 3).
fade
зникати. d
- тривалість вицвітання. st
це коли починається.
concat
для об'єднання (або "приєднання") кожного зображення.
format
для виведення схеми вибірки кольоровості, яка сумісна з гравцями на базі не-FFmpeg, якщо кодування з libx264 (кодер за замовчуванням для виводу MP4, якщо він підтримується вашою збіркою).
Кроссфейд
Використання melt
від Мультимедійні рамки МЛТ для цього завдання може бути простіше:
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
Використовуйте a профілю що відповідає вашим файлам входів. Можна перелічити профілі за допомогою melt -query profiles
і отримати інформацію про певний профіль, наприклад melt -query "profile=atsc_720p_25"
.
out
встановлює тривалість кожного зображення. Значення в кадрах. Цей приклад використовує профіль, який встановлює частоту кадрів 25, тому 25 кадрів дорівнює 1 секунді.
mix
встановлює тривалість вицвітання. Значення в кадрах.
mixer
встановлює тип суміші.
Подивитися Документація МЛТ і Розтопити документацію для отримання додаткової інформації.