FFmpeg filter_complex concat仅在裁剪时提供第一个输入

时间:2018-09-20 14:59:17

标签: ffmpeg crop concat

当使用concat和crop具有多个输入和多个输出时,我遇到了麻烦。这是

ffmpeg -y \
-i input_1.mp4 \
-i input_2.mp4 \
-i input_3.mp4 \
-i input_4.mp4 \
-filter_complex "[0:v][1:v][2:v][3:v]concat=n=4:v=1:a=0[v];\
[v]crop=3840:1080:960:0[center];\
[v]crop=960:1080:0:0[left];\
[v]crop=960:1080:4800:0[right]" \
-map "[center]" -c:v libx264 -preset faster -b:v 20000k -an -pix_fmt yuv420p -tune zerolatency -tune fastdecode "Output_Center.mp4" \
-map "[left]" -c:v libx264 -preset faster -b:v 20000k -an -pix_fmt yuv420p -tune zerolatency -tune fastdecode "Output_Left.mp4" \
-map "[right]" -c:v libx264 -preset faster -b:v 20000k -an -pix_fmt yuv420p -tune zerolatency -tune fastdecode "Output_Right.mp4"

因此,我将4个输入连接到1个流[v]中,然后将某些部分裁剪到[中心],[左]和[右]

对于第一个输出(中心),它可以按预期工作,输出视频时长是正确的(1 + 2 + 3 + 4个输入时长),但是对于左右输出时长,则完全匹配第一个输入的时长。

我还尝试使用[v1]作为concat的输出,但没有帮助

1 个答案:

答案 0 :(得分:1)

中间过滤垫输出不能重复使用。要多次使用,请为输出添加带有不同标签的split,即

-filter_complex "[0:v][1:v][2:v][3:v]concat=n=4:v=1:a=0,split=3[v1][v2][v3];\
[v1]crop=3840:1080:960:0[center];\
[v2]crop=960:1080:0:0[left];\
[v3]crop=960:1080:4800:0[right]" \