0

我有一个网站,我们将多个视频与 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
4

3 回答 3

1

不需要彩色滤光片,因为仅 xstack 就足够了。具有 8 个输入的 3x3 示例;右下角用黑色填充:

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 分支的构建。

于 2020-08-15T19:42:57.980 回答
0

升级到 ffmpeg 4.3 或最近的 git buildfill=black并向 xstack 添加选项。

于 2020-08-15T19:42:38.473 回答
0

您还可以使用overlay过滤器。并将视频覆盖在黑色背景上。

[background][a0]overlay=x={x}:y={y}[overlay0];
[overlay0][a1]overlay=x={x}:y={y}[overlay1];
...
于 2020-08-15T19:06:16.620 回答