首页 > 解决方案 > FFmpeg - 用于马赛克视频输出的 Xstack 多输入 - 额外输出 空白屏幕始终为绿色

问题描述

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

标签: ffmpegmosaic

解决方案


不需要彩色滤光片,因为仅 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 分支的构建。


推荐阅读