Команда для створення відео з зображень з фоновим відео та аудіо


0

Я використовую ffmpeg в моєму додатку для Android. Я хочу створити відео з зображень з фоновим відео та аудіо. Зображення накладаються на відео з кордонами. Відео та аудіо будуть повторюватися, поки всі слайди не будуть видимі.

Це відео показує приклад того, чого я хочу досягти.

Яку команду мені потрібно для цього? Я не знаю, як писати команди ffmpeg.

У моєму додатку користувач може вибрати зображення з галереї. Використовуючи вибрані зображення, я повинен створити відео, кожне зображення буде показано протягом 5 секунд. У мене є відео та аудіо невеликої тривалості (як показано у зв'язаному відео, наприклад, відео з вогнем), яке буде повторюватись, доки не будуть показані всі слайди.

Відповіді:


1

Це можливо, але вимагатиме додаткових сценаріїв через змінну кількість вибраних зображень, а також через відсутність реального циклічного вибору для відео та аудіовходів.

Ця відповідь дає деякі приклади , але ви маєте додаткову вимогу циклічного відео та аудіопотоку.

Ось приклади, які ви можете адаптувати та розвивати. Сценарії будуть за вами.

Приклад 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 іноді вибагливі.


Здравствуйте По-перше, Дуже дякую за дуже хорошу відповідь. Я використовую приклад 1 команди в моєму коді, але він не працює належним чином, зображення не змінюються через кожні 5 сек. По-друге, фонове відео працює один раз, але не повторюється. По-третє, також виникають проблеми зі звуком, які повторюються у відео, але зупиняються кілька разів. Перевірте наступне посилання: drive.google.com/file/d/0B3zXdKH-t-GqOWdkbzNZWmQycUE/… . Я створив вище пов'язане відео з шістьма зображеннями.
Mandy Crisley

@MandyCrisley Не багато я можу зробити, не бачачи вашої команди і повного виводу консолі.
llogan

, Я використовую наступну команду ffmpeg: "ffmpeg", "-i", "fire_1.mp4", "-i", input_file_path, "- framerate", "1/5", "-i", PHOTO_% 3d. 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 = білий [fg]; bg] [fg] overlay = (Ww) / 2: (Hh) / 2, формат = yuv420p [v], "-map", "[v]", "- map", "[a]", " -s "," 640x480 "," - r "," 25 "," - b: v "," 2000k "," - c: v "," mpeg4 "," - c: a "," aac ", "-strict", "experimental", "- b: a", "32k", "- shortest", output_file_path
Mandy Crisley

Для файлу журналу консолі перевірте наступне посилання: посилання
Mandy Crisley
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.