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

MacOS+Python3.10播放音频文件报错求助

在MacOS + Python3.10环境下播放音频的问题解决

问题背景

在MacOS系统、Python3.10环境下尝试编写代码播放音频文件,先后使用playsound和pydub库均报错,已尝试部分方案未解决。

第一次尝试:使用playsound库

代码:

from playsound import playsound
playsound('/Users/cairo/Desktop/i wish.mp3')

报错信息:

/Users/cairo/PycharmProjects/pythonProject/venv/bin/python /Users/cairo/PycharmProjects/pythonProject/main.py 
playsound is relying on a python 2 subprocess. Please use `pip3 install PyObjC` if you want playsound to run more efficiently.
Traceback (most recent call last):
  File "/Users/cairo/PycharmProjects/pythonProject/main.py", line 3, in <module>
    playsound(r'/Users/cairo/Desktop/beep sound 2')
  File "/Users/cairo/PycharmProjects/pythonProject/venv/lib/python3.10/site-packages/playsound.py", line 244, in <lambda>
    playsound = lambda sound, block = True: _playsoundAnotherPython('/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python', sound, block, macOS = True)
  File "/Users/cairo/PycharmProjects/pythonProject/venv/lib/python3.10/site-packages/playsound.py", line 223, in _playsoundAnotherPython
    raise PlaysoundException('Cannot find a sound with filename: ' + sound)
playsound.PlaysoundException: Cannot find a sound with filename: /Users/cairo/Desktop/beep sound 2

Process finished with exit code 1

已执行pip3 install PyObjC,但仍报错。

第二次尝试:使用pydub库

代码:

from pydub import AudioSegment
from pydub.playback import play

song = AudioSegment.from_wav("/Users/cairo/Desktop/i wish.mp3")
play(song)

报错信息:

/Users/cairo/PycharmProjects/beepsound/venv/lib/python3.10/site-packages/pydub/utils.py:170: RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work
  warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)
/Users/cairo/PycharmProjects/beepsound/venv/lib/python3.10/site-packages/pydub/utils.py:198: RuntimeWarning: Couldn't find ffprobe or avprobe - defaulting to ffprobe, but may not work
  warn("Couldn't find ffprobe or avprobe - defaulting to ffprobe, but may not work", RuntimeWarning)
Traceback (most recent call last):
  File "/Users/cairo/PycharmProjects/beepsound/main.py", line 4, in <module>
    song = AudioSegment.from_wav("/Users/cairo/Desktop/i wish.mp3")
  File "/Users/cairo/PycharmProjects/beepsound/venv/lib/python3.10/site-packages/pydub/audio_segment.py", line 808, in from_wav
    return cls.from_file(file, 'wav', parameters=parameters)
  File "/Users/cairo/PycharmProjects/beepsound/venv/lib/python3.10/site-packages/pydub/audio_segment.py", line 728, in from_file
    info = mediainfo_json(orig_file, read_ahead_limit=read_ahead_limit)
  File "/Users/cairo/PycharmProjects/beepsound/venv/lib/python3.10/site-packages/pydub/utils.py", line 274, in mediainfo_json
    res = Popen(command, stdin=stdin_parameter, stdout=PIPE, stderr=PIPE)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/subprocess.py", line 971, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/subprocess.py", line 1847, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'ffprobe'

Process finished with exit code 1

问题分析与解决步骤

针对playsound的问题

  • 文件路径不匹配:报错提示找不到的文件是/Users/cairo/Desktop/beep sound 2,但代码里写的是/Users/cairo/Desktop/i wish.mp3,需确认代码中的文件路径和实际文件完全一致,包括文件名、后缀名。
  • 版本兼容问题:老版本playsound在Python3.10下依赖Python2子进程,即使安装PyObjC也可能存在兼容问题。建议卸载现有版本,安装适配Python3的稳定版本:
    pip uninstall playsound
    pip install playsound==1.2.2
    

针对pydub的问题

  • 格式调用错误:用AudioSegment.from_wav()读取MP3文件是错误的,应使用对应格式的方法AudioSegment.from_mp3(),或通用方法AudioSegment.from_file()自动识别格式。
  • 缺少依赖工具:pydub依赖ffmpeg(包含ffprobe),需先通过Homebrew安装:
    brew install ffmpeg
    
    修改后的运行代码:
    from pydub import AudioSegment
    from pydub.playback import play
    
    song = AudioSegment.from_mp3("/Users/cairo/Desktop/i wish.mp3")
    play(song)
    

备选方案:使用pygame库

如果上述库仍有兼容问题,可尝试兼容性更好的pygame:

  1. 安装库:
    pip install pygame
    
  2. 示例代码:
    import pygame
    
    pygame.mixer.init()
    pygame.mixer.music.load('/Users/cairo/Desktop/i wish.mp3')
    pygame.mixer.music.play()
    while pygame.mixer.music.get_busy():
        pygame.time.Clock().tick(10)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:05:22