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

Python处理YouTube播放列表:MP4转MP3时FFmpeg报错问题

问题分析

报错显示ffmpeg执行音频转换命令时退出码1,核心原因有三点:

  • 调用ffmpeg时使用相对路径,但音频文件实际下载到了指定的downloadDirectory目录,ffmpeg找不到目标文件
  • 视频标题包含//这类特殊字符,导致ffmpeg解析文件名时出错
  • 未指定音频编码格式,触发ffmpeg默认编码的兼容性问题
解决方案

针对上述问题,修改MP3函数如下:

def MP3():
    import os
    # 清理文件名中的非法字符,避免ffmpeg解析出错
    def clean_filename(filename):
        invalid_chars = '<>:"/\\|?*'
        for char in invalid_chars:
            filename = filename.replace(char, '_')
        return filename

    for video in playlist.videos:
        audio = video.streams.get_audio_only()
        # 获取音频文件下载后的完整路径(pytube会自动替换部分非法字符)
        downloaded_file = audio.download(downloadDirectory)
        
        # 清理标题中的剩余非法字符
        cleaned_title = clean_filename(video.title)
        # 构建输出文件的完整路径
        output_path = os.path.join(downloadDirectory, f"{cleaned_title}.mp3")

        print(f"转换文件: {downloaded_file} -> {output_path}")

        # 调用ffmpeg时使用完整路径,并指定MP3标准编码
        ff = ffmpy.FFmpeg(
            executable='C:/ffmpeg/bin/ffmpeg.exe',
            inputs={downloaded_file: None},
            outputs={output_path: '-c:a libmp3lame'}
        )
        ff.run()
修改说明
  • 路径匹配:直接使用audio.download()返回的完整路径作为ffmpeg输入,确保ffmpeg准确定位到下载的音频文件
  • 文件名清理:替换标题中的<>:\"/\\|?*等非法字符,避免特殊字符干扰ffmpeg的文件名解析
  • 编码指定:添加-c:a libmp3lame参数,强制使用MP3标准编码,解决默认编码的兼容性问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:05:34