如何用FFmpeg移除指定音频片段而非拼接保留片段?
直接移除指定音频片段的FFmpeg实现方案
你可以通过FFmpeg的音频滤镜组合,直接选取并保留原音频中需要的剩余部分(也就是移除目标片段后的内容),具体命令如下:
ffmpeg -i "abc.mp3" -filter_complex "[0:a]atrim=end=115,asetpts=PTS-STARTPTS[part1];[0:a]atrim=start=368:end=605,asetpts=PTS-STARTPTS[part2];[part1][part2]concat=n=2:v=0:a=1[aout]" -b:a 320k -map "[aout]" "def.mp3"
命令说明:
[0:a]atrim=end=115,asetpts=PTS-STARTPTS[part1]:截取原音频从开头到115秒的片段,重置时间戳避免播放异常,标记为part1[0:a]atrim=start=368:end=605,asetpts=PTS-STARTPTS[part2]:截取原音频368秒到605秒的片段,同样重置时间戳,标记为part2[part1][part2]concat=n=2:v=0:a=1[aout]:将两个保留的音频片段拼接为一个完整音频流,n=2表示输入片段数量,v=0说明无视频流,a=1说明保留音频流,最终标记为aout-map "[aout]":指定输出文件使用拼接后的音频流
FFmpeg没有专门的“删除片段”滤镜,但这种通过选取保留片段再拼接的方式,完全等价于直接移除目标片段,且效率和直接拼接所需片段的方式一致。
内容的提问来源于stack exchange,提问作者Plainsage
相关产品推荐
相关产品推荐

