FFmpeg — Xstack несколько входов для вывода мозаичного видео — дополнительный пустой экран всегда зеленый

#ffmpeg #mosaic

#ffmpeg #мозаика

Вопрос:

У меня есть веб-сайт, где мы объединяем несколько видеороликов с помощью ffmpeg xstack. Это автоматизированный процесс. При нечетном количестве видеороликов пустые фрагменты мозаики становятся зелеными. Я пытаюсь выяснить, как сделать запасные пробелы черными.

Я пробовал xstack=inputs=2:fill='black':layout=0_0 (это выдает ошибку, объект не найден), также пробовал -filter_complex "color=s=1920x1080:c=black" .

Есть предложения? Вот вся команда:

 ffmpeg -i video1 -i video1 -i video1 -i video1 -i video1 -i video1 -i video1  
    -i video1 -i video1 -filter_complex 
    "color=s=1920x1080:c=black;[0:v] setpts=PTS-STARTPTS, scale=qvga [a0];[1:v] setpts=PTS-STARTPTS, scale=qvga [a1];[2:v] setpts=PTS-STARTPTS, scale=qvga [a2];[3:v] setpts=PTS-STARTPTS, scale=qvga [a3];[4:v] setpts=PTS-STARTPTS, scale=qvga [a4];[5:v] setpts=PTS-STARTPTS, scale=qvga [a5];[6:v] setpts=PTS-STARTPTS, scale=qvga [a6];[7:v] setpts=PTS-STARTPTS, scale=qvga [a7];[8:v] setpts=PTS-STARTPTS, scale=qvga [a8];[a0][a1][a2][a3][a4][a5][a6][a7][a8]xstack=inputs=9:layout=0_0|w0_0|w0 w1_0|0_h0|w0_h0|w0 w1_h0|0_h0 h1|w0_h0 h1|w0 w1_h0 h1[out] " 
    -map "[out]" output
  

Ответ №1:

Нет необходимости в цветовом фильтре, поскольку одного xstack должно быть достаточно. пример 3×3 с 8 входами; нижний правый угол заполнен черным:

 ffmpeg -i input -i input -i input -i input -i input -i input -i input -i input -filter_complex "[0:v] setpts=PTS-STARTPTS, scale=qvga [a0];[1:v] setpts=PTS-STARTPTS, scale=qvga [a1];[2:v] setpts=PTS-STARTPTS, scale=qvga [a2];[3:v] setpts=PTS-STARTPTS, scale=qvga [a3];[4:v] setpts=PTS-STARTPTS, scale=qvga [a4];[5:v] setpts=PTS-STARTPTS, scale=qvga [a5];[6:v] setpts=PTS-STARTPTS, scale=qvga [a6];[7:v] setpts=PTS-STARTPTS, scale=qvga [a7];[a0][a1][a2][a3][a4][a5][a6][a7]xstack=inputs=8:layout=0_0|w0_0|w0 w1_0|0_h0|w0_h0|w0 w1_h0|0_h0 h1|w0_h0 h1:fill=black[out] " -map "[out]" output.mp4
  

Убедитесь, что вы используете версию 4.3 или сборку из текущей ветки git master.

Комментарии:

1. Обновление ffmpeg и использование заливки сработали, спасибо!

Ответ №2:

Что вы также могли бы использовать, так это overlay фильтр. И наложите видео на черный фон.

 [background][a0]overlay=x={x}:y={y}[overlay0];
[overlay0][a1]overlay=x={x}:y={y}[overlay1];
...
  

Ответ №3:

Обновитесь до ffmpeg 4.3 или последней сборки git и добавьте fill=black опцию в xstack.

Комментарии:

1. Обновление ffmpeg и использование заливки сработали, спасибо!