关于python使用playsound播放音频报错的原因分析

本文详细记录了在使用Python的playsound模块播放MP3文件时遇到的错误,包括Error305和Error263。作者通过深入源码分析和查阅资料,发现问题是由于使用了utf-16编码导致的。解决方案是将命令字符串的编码方式从utf-16改为不编码,即移除`.encode('utf-16')`。这一问题对于Windows系统下处理多媒体文件的开发者具有参考价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序代码

from playsound import playsound
playsound('你的MP3文件的路径')
#注意\字符的转义

报错内容

Error 305 for command:
        open "F:\pycharm\data_analysis\data_1\2.mp3"
    在用引号括起的字符串不能指定额外的字符。

    Error 263 for command:
        close "F:\pycharm\data_analysis\data_1\2.mp3"
    指定的设备未打开,或不被 MCI 所识别。
Failed to close the file: "F:\pycharm\data_analysis\data_1\2.mp3"
Traceback (most recent call last):
  File "F:/pycharm/data_analysis/data_1/mi.py", line 5, in <module>
    playsound(r'F:\pycharm\data_analysis\data_1\2.mp3')
  File "E:\Pythonxx\envs\learn\lib\site-packages\playsound.py", line 72, in _playsoundWin
    winCommand(u'open {}'.format(sound))
  File "E:\Pythonxx\envs\learn\lib\site-packages\playsound.py", line 64, in winCommand
    raise PlaysoundException(exceptionMessage)
playsound.PlaysoundException: 
    Error 305 for command:
        open "F:\pycharm\data_analysis\data_1\2.mp3"
    在用引号括起的字符串不能指定额外的字符。

过程

  • 把源码分析了一下子也没有发现问题,然后网上百度了两天才发现眉目
  • 最后在百度搜索关键词为windll.winmm.mciSendStringW的文章中发现了一篇非常好的文章,是关于使用windll.winmm.mciSendStringW函数编码问题的。

结果

  • 将源码中command = ' '.join(command).encode('utf-16')变为command = ' '.join(command)即可

原因

  • windows的命令不能使用utf-16的方式进行编码
  • 能力有限,欢迎补充。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值