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

Python使用ffmpeg合并mp3与mp4文件时触发TypeError报错如何解决

错误原因

报错根因是ffmpeg.concat()返回的合并流节点不支持数字下标取值,必须用字符串键访问对应流:

  • 合并后的视频流通过merged['v']获取
  • 合并后的音频流通过merged['a']获取
    你代码里写的merged[0]、merged[1]传入了数字索引,不符合ffmpeg-python的节点访问规则,直接触发类型报错,和output参数缺失没有关系。
修正后的代码
if haveAudio:
    infile1 = ffmpeg.input(f"{title}_video.mp4")
    infile2 = ffmpeg.input(f"{title}_audio.mp3")

    merged  = ffmpeg.concat(infile1, infile2, v=1, a=1)
    output  = ffmpeg.output(merged['v'], merged['a'], f"{title}.mp4")
    # 配置完输出后需要调用run才会实际执行合并操作,别漏写
    # ffmpeg.run(output)
可选优化

如果不需要对视频做二次编码,可以在输出参数里配置流拷贝,合并速度会提升数倍:

output  = ffmpeg.output(merged['v'], merged['a'], f"{title}.mp4", vcodec="copy", acodec="aac")

注意:MP4容器对MP3格式音频的兼容性较差,将音频转成AAC编码可以避免绝大多数播放器无法正常播放音轨的问题。

内容的提问来源于stack exchange,提问作者Dairop

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:21:22