You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FFmpeg中trim与concat组合使用异常:仅生成第一段剪辑内容的问题求助

FFmpeg中trim与concat组合使用异常:仅生成第一段剪辑内容的问题求助

大家好,我目前在Windows 11上使用media-autobuild_suite,安装才一周,明天打算更新它。

我现在有个需求:处理一个私人视频文件,要剪出两段内容合并成一个新视频;同时重新编码视频流(参数为-c:v libx265 -crf xx -preset veryslow)和音频流(参数为-c:a libfdk_aac -b:a xxxk);另外还要清除输出视频的所有元数据,用到的参数是-map_metadata -1 -metadata title="" -map_chapters -1 -fflags +bitexact -flags:v +bitexact -flags:a +bitexact。我希望用一次FFmpeg命令完成所有操作,所以决定用trim和concat滤镜来实现。

为了复现问题,我用了一个公开测试视频做实验,参考相关方案做了五个测试案例,但结果都一样(除了元数据部分):输出视频只有第一段剪辑(0到16.820秒),时长只有16.820秒,第二段完全没被处理进去。如果需要的话,我可以提供每个案例的命令行输出日志。

我的测试案例

Case 1(两个源文件,包含元数据编辑,完整时间戳格式,比如00.000:16.820)

ffmpeg -i source/BigBuckBunny.mp4 -i source/BigBuckBunny.mp4 -map_metadata -1 -metadata title="" -map_chapters -1 -fflags +bitexact -flags:v +bitexact -flags:a +bitexact -filter_complex "[0:v]trim=00.000:16.820,setpts=PTS-STARTPTS[v0]; [0:a]atrim=00.000:16.820,asetpts=PTS-STARTPTS[a0]; [1:v]trim=153.000:348.840,setpts=PTS-STARTPTS[v1]; [1:a]atrim=153.000:348.840,asetpts=PTS-STARTPTS[a1]; [v0][a0][v1][a1]concat=n=2:v=1:a=1[v][a]" -map "[v]" -c:v libx265 -crf 22 -preset veryslow -map "[a]" -c:a libfdk_aac -b:a 128k result/"BigBuckBunny".mkv

Case 2(单个源文件,包含元数据编辑,短时间戳格式,比如0:16.820)

ffmpeg -i source/BigBuckBunny.mp4 -map_metadata -1 -metadata title="" -map_chapters -1 -fflags +bitexact -flags:v +bitexact -flags:a +bitexact -filter_complex "[0:v]trim=0:16.820,setpts=PTS-STARTPTS[v0]; [0:a]atrim=0:16.820,asetpts=PTS-STARTPTS[a0]; [0:v]trim=153:348.840,setpts=PTS-STARTPTS[v1]; [0:a]atrim=153:348.840,asetpts=PTS-STARTPTS[a1]; [v0][a0][v1][a1]concat=n=2:v=1:a=1[v][a]" -map "[v]" -c:v libx265 -crf 22 -preset veryslow -map "[a]" -c:a libfdk_aac -b:a 128k result/"BigBuckBunny".mkv

Case 3(两个源文件,包含元数据编辑,短时间戳格式,同Case 2)

ffmpeg -i source/BigBuckBunny.mp4 -i source/BigBuckBunny.mp4 -map_metadata -1 -metadata title="" -map_chapters -1 -fflags +bitexact -flags:v +bitexact -flags:a +bitexact -filter_complex "[0:v]trim=0:16.820,setpts=PTS-STARTPTS[v0]; [0:a]atrim=0:16.820,asetpts=PTS-STARTPTS[a0]; [1:v]trim=153:348.840,setpts=PTS-STARTPTS[v1]; [1:a]atrim=153:348.840,asetpts=PTS-STARTPTS[a1]; [v0][a0][v1][a1]concat=n=2:v=1:a=1[v][a]" -map "[v]" -c:v libx265 -crf 22 -preset veryslow -map "[a]" -c:a libfdk_aac -b:a 128k result/"BigBuckBunny".mkv

Case 4(两个源文件,无元数据编辑,短时间戳格式,同Case 2)

ffmpeg -i source/BigBuckBunny.mp4 -i source/BigBuckBunny.mp4 -filter_complex "[0:v]trim=0:16.820,setpts=PTS-STARTPTS[v0]; [0:a]atrim=0:16.820,asetpts=PTS-STARTPTS[a0]; [1:v]trim=153:348.840,setpts=PTS-STARTPTS[v1]; [1:a]atrim=153:348.840,asetpts=PTS-STARTPTS[a1]; [v0][a0][v1][a1]concat=n=2:v=1:a=1[v][a]" -map "[v]" -c:v libx265 -crf 22 -preset veryslow -map "[a]" -c:a libfdk_aac -b:a 128k result/"BigBuckBunny".mkv

Case 5(单个源文件,无元数据编辑,短时间戳格式,同Case 2)

ffmpeg -i source/BigBuckBunny.mp4 -filter_complex "[0:v]trim=0:16.820,setpts=PTS-STARTPTS[v0]; [0:a]atrim=0:16.820,asetpts=PTS-STARTPTS[a0]; [1:v]trim=153:348.840,setpts=PTS-STARTPTS[v1]; [1:a]atrim=153:348.840,asetpts=PTS-STARTPTS[a1]; [v0][a0][v1][a1]concat=n=2:v=1:a=1[v][a]" -map "[v]" -c:v libx265 -crf 22 -preset veryslow -map "[a]" -c:a libfdk_aac -b:a 128k result/"BigBuckBunny".mkv

所有案例的结果都一致(元数据相关的差异除外):输出视频的时长只有16.820秒,也就是只有第一段剪辑(0到16.820秒)被处理了,第二段完全没出现在最终视频里。

想请教各位,我哪里做错了?提前感谢大家的帮助!

备注:内容来源于stack exchange,提问作者Su-47

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 10:49:40