问题描述
我有一个网站,我们将多个视频与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
解决方法
不需要彩色滤光片,因为仅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分支中的版本。
,您还可以使用overlay
过滤器。并将视频覆盖在黑色背景上。
[background][a0]overlay=x={x}:y={y}[overlay0];
[overlay0][a1]overlay=x={x}:y={y}[overlay1];
...
,
升级到ffmpeg 4.3或最新的git build并向xstack添加fill=black
选项。