Це можливо, але вимагатиме додаткових сценаріїв через змінну кількість вибраних зображень, а також через відсутність реального циклічного вибору для відео та аудіовходів.
Ця відповідь дає деякі приклади , але ви маєте додаткову вимогу циклічного відео та аудіопотоку.
Ось приклади, які ви можете адаптувати та розвивати. Сценарії будуть за вами.
Приклад 1
Цей приклад передбачає, що:
Всі входи зображення мають однаковий розмір кадру. Це є вимогою, інакше можуть виникнути проблеми з синхронізацією .
Всі вхідні зображення називаються img001.jpg
, img002.jpg
, img003.jpg
Крім того, ви можете скористатися шаблоном глобусу, як описано в розділі файли демультиплексування файлів зображення .
ffmpeg -i video.mkv -i audio.mp3 -framerate 1/5 -i img%03.jpg -filter_complex \
"[0:v]setpts=PTS-STARTPTS[vid]; \
[vid][vid][vid]concat=n=3:v=1:a=0[bg]; \
[1:a][1:a][1:a]concat=n=3:v=0:a=1[a]; \
[2:v]drawbox=t=5:c=white[fg]; \
[bg][fg]overlay=(W-w)/2:(H-h)/2,format=yuv420p[v]" \
-map "[v]" -map "[a]" -shortest output.mp4
Приклад 2
Інший метод полягає в тому, щоб явно перераховувати кожне зображення як окремий вхід. Це може дозволити вам виконувати будь-яке масштабування, якщо це необхідно, але робить команду ще більш складною:
ffmpeg -i video.mkv -i audio.mp3 -loop 1 -i hound.jpg -loop 1 -i crow.jpg \
-loop 1 -i donkey.png -filter_complex \
"[0:v]setpts=PTS-STARTPTS[vid]; \
[vid][vid][vid]concat=n=3:v=1:a=0[bg]; \
[1:a][1:a][1:a]concat=n=3:v=0:a=1[a]; \
[2:v]trim=duration=5,scale=640:360,drawbox=t=5:c=white[fg0]; \
[3:v]trim=duration=5,scale=640:360,drawbox=t=5:c=white[fg1]; \
[4:v]trim=duration=5,scale=640:360,drawbox=t=5:c=white[fg2]; \
[bg][fg0]overlay=(W-w)/2:(H-h)/2[ol0]; \
[ol0][fg1]overlay=(W-w)/2:(H-h)/2[ol1]; \
[ol1][fg2]overlay=(W-w)/2:(H-h)/2,format=yuv420p[v]" \
-map "[v]" -map "[a]" -shortest output.mp4
Існує декілька відповідей про Super User, які надають більш складні приклади масштабування. Цей приклад є простим, але може призвести до викривлених або розтягнутих вихідних зображень, якщо вхідні зображення змінюються в пропорціях.
Що потрібно визначити
Для обох методів, залежно від того, скільки зображень вибирається користувачем, і від тривалості відео та аудіо, вам доведеться визначити, скільки сегментів потрібно для concat
фільтр для забезпечення відповідного циклу.
Можливі деякі проблеми. Зображення демультиплексор і concat
іноді вибагливі.