[4] @无名啊,抱歉给您带来了困扰。我之前的回答没有正确分析问题。在仔细审查过后,我认为问题可能与音频流长度与视频流长度不匹配有关。-ss 0 -t 5 参数会裁剪视频流,但音频流的长度并没有受到限制。导致输出视频的长度与音频流的长度相同。让我们尝试修改原始命令,以便从音频和视频流的来源处进行截取:
ffmpeg.exe -ss 0 -t 5 -i ./test.mp4 -ss 0 -t 5 -i ./test.mp4 -filter_complex '[1:a]concat=n=1:v=0:a=1[audio]; [0:v]concat=n=1[video]' -map '[video]' -map '[audio]' -shortest out.mp4
在这个修改后的命令中,我们在第二个输入文件前也添加了 -ss 0 -t 5 参数,以便从音频流的来源处进行截取。现在这个命令应该可以正确地从输入的 test.mp4 文件中裁剪前 5 秒,并将结果输出为一个名为 out.mp4 的新文件。
如果您要连接多个音频和视频流,请为每个输入文件添加 -ss 和 -t 参数,如下所示:
ffmpeg.exe -ss 0 -t 5 -i input1.mp4 -ss 0 -t 5 -i input2.mp4 -filter_complex "[0:v][1:v]concat=n=2:v=1:a=0[video];[0:a][1:a]concat=n=2:v=0:a=1[audio]" -map "[video]" -map "[audio]" out.mp4
这个命令将从两个输入文件(input1.mp4 和 input2.mp4)中分别裁剪前 5 秒,并将裁剪后的音频和视频流连接起来,最后将结果输出到名为 out.mp4 的文件中。如果您需要连接更多音视频流,只需根据需要调整输入文件和过滤器链即可。