объединить 4 видео с задержкой рядом с помощью ffmpeg

объединить 4 видео с задержкой рядом с помощью ffmpeg

У меня есть как минимум 4 видео с видеоконференции, созданных meetecho/janus-gateway
Janus, создаю два mjr видео и аудио файла для каждого пользователя, сначала я объединил их в один файл webm, затем конвертировал все в видео 500*500.
Теперь я пытаюсь объединить эти видео как мозаику и нашел этот код:

ffmpeg -i 1.webm -i 2.webm -i 3.webm -i 4.webm \
-speed 8 -deadline realtime -filter_complex "[0]pad=2*iw:2*ih[l]; \
[1]setpts=PTS-STARTPTS+428/TB[1v]; [l][1v]overlay=x=W/2[a]; \
[2]setpts=PTS-STARTPTS+439/TB[2v]; [a][2v]overlay=y=H/2[b]; \
[3]setpts=PTS-STARTPTS+514/TB[3v]; [b][3v]overlay=y=H/2:x=W/2[v]; \
[1]adelay=428372|428372[1a]; \
[2]adelay=439999|439999[2a]; \
[3]adelay=514589|514589[3a]; \
[0][1a][2a][3a]amix=inputs=4[a]" \
-map "[v]" -map "[a]" merged.webm

Я рассчитал время задержки на основе даты создания каждого файла, относящегося к первому видео.

мои проблемы:

  1. Этот код не работает! После нескольких минут зависания консоли отображается следующая строка:

    Killed 29 fps=0.1 q=0.0 размер= 1kB время=00:04:30.07 битрейт= 0.0kbit/s скорость=0.896x

  2. Я не узнал значения букв до и после наложения, [1v][2v][3v][l][a][b][v]...

решение1

Вместо многократного наложения попробуйте использовать фильтр «xstack» со всеми вашими видеодорожками. Вы можете сначала задержать все ваши входы, а затем передать их в xstack и создать собственную компоновку.

Пример использования конвейера с xstack для создания мозаики можно посмотреть здесь.

Значение символов между [ и ] — это просто имя/идентификатор для идентификации ваших треков.

Если фильтру, например «масштаб», задан один вход, и вы хотите обработать его выход с помощью другого фильтра, вы можете сделать это следующим образом:

-filter_complex "[0:v]scale=1920:1080[video_yourscaledoutput];[video_yourscaledoutput]your_next_filter=args[video_finaloutput]" -map "[video_finaloutput]" your_final_file.mp4

[0:v]вот идентификатор видеодорожки вашего первого входного потока, остальные можете назвать так, как хотите :)

Связанный контент