#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 и использование заливки сработали, спасибо!