如何使用ffmpeg-python实现音频文件拼接(替代FFmpeg CLI命令)
使用ffmpeg-python实现音频拼接(对应FFmpeg concat demuxer命令)
你可以通过ffmpeg-python直接映射原FFmpeg CLI命令的参数来实现相同的音频拼接功能,核心是指定concat demuxer并设置对应参数,以下是两种可行方案:
方案1:使用预先生成的input.txt文件
对应你原命令ffmpeg -f concat -safe 0 -i input.txt -codec copy output.mp4的代码实现:
import ffmpeg ( ffmpeg .input('input.txt', format='concat', safe=0) .output('output.mp4', codec='copy') .run(quiet=True, overwrite_output=True) )
参数说明:
.input('input.txt', format='concat', safe=0):指定输入为input.txt,启用concatdemuxer,safe=0关闭路径安全检查(允许使用绝对路径或不同目录的文件).output('output.mp4', codec='copy'):设置输出文件,codec='copy'直接拷贝音频流,避免重新编码.run(quiet=True, overwrite_output=True):执行拼接操作,quiet=True抑制多余日志输出,overwrite_output=True允许覆盖已存在的输出文件
方案2:动态传递文件列表(无需创建input.txt)
如果不想预先创建input.txt,可以通过管道直接传递文件列表内容:
import ffmpeg # 构造要拼接的音频文件路径列表,每行格式为file '文件路径' concat_files = """file 'audio1.mp3' file 'audio2.mp3' """ ( ffmpeg .input('pipe:', format='concat', safe=0) .output('output.mp4', codec='copy') .run(input=concat_files.encode(), quiet=True, overwrite_output=True) )
这种方式可以在代码中动态生成要拼接的文件列表,无需额外创建文本文件。
内容的提问来源于stack exchange,提问作者Denys Murakhovskyi
相关产品推荐
相关产品推荐

