关于python使用playsound播放音频:指定的设备未打开,或不被 MCI 所识别。

2023-05-16

python中使用playsound函数是出现以下报错:

    Error 263 for command:
        open D:/Python_code/Chatting_robot/py1/mp3/hello.mp3
    指定的设备未打开,或不被 MCI 所识别。

    Error 263 for command:
        close D:/Python_code/Chatting_robot/py1/mp3/hello.mp3
    指定的设备未打开,或不被 MCI 所识别。
Failed to close the file: D:/Python_code/Chatting_robot/py1/mp3/hello.mp3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Hasee\AppData\Local\Programs\Python\Python310\lib\site-packages\playsound.py", line 72, in _playsoundWin
    winCommand(u'open {}'.format(sound))
  File "C:\Users\Hasee\AppData\Local\Programs\Python\Python310\lib\site-packages\playsound.py", line 64, in winCommand
    raise PlaysoundException(exceptionMessage)
playsound.PlaysoundException:
    Error 263 for command:
        open D:/Python_code/Chatting_robot/py1/mp3/hello.mp3
    指定的设备未打开,或不被 MCI 所识别。

看中间报错文件位置为:

C:\Users\Hasee\AppData\Local\Programs\Python\Python310\lib\site-packages\playsound.py

在电脑中找到文件并打开
找到报错的64行左右,会看到如下一个函数:

def winCommand(*command):
        bufLen = 600
        buf = c_buffer(bufLen)
        command = ' '.join(command) .encode('utf-16')
        errorCode = int(windll.winmm.mciSendStringW(command, buf, bufLen - 1, 0))  # use widestring version of the function
        if errorCode:
            errorBuffer = c_buffer(bufLen)
            windll.winmm.mciGetErrorStringW(errorCode, errorBuffer, bufLen - 1)  # use widestring version of the function
            exceptionMessage = ('\n    Error ' + str(errorCode) + ' for command:'
                                '\n        ' + command.decode('utf-16') +
                                '\n    ' + errorBuffer.raw.decode('utf-16').rstrip('\0')
                                )
            logger.error(exceptionMessage)
            raise PlaysoundException(exceptionMessage)
        return buf.value

因为python3默认的是utf-8的编码方式,而不是utf-16.
找到如上代码第4行

 command = ' '.join(command) .encode('utf-16')

注释掉:encode(‘utf-16’)

command = ' '.join(command) 		#.encode('utf-16')

最终如下:
在这里插入图片描述

所以这个报错不是声卡的问题,连续报错了几天,突发奇想想到了去看一眼playsound的源码为什么报错,结果一眼看到了它的编码方式竟然是utf-16,没想到问题出在这,改完就可以了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于python使用playsound播放音频:指定的设备未打开,或不被 MCI 所识别。 的相关文章

随机推荐

  • 图解进程线程、互斥锁与信号量-看完不懂你来打我

    在上学的时候 xff0c 老师讲到进程与线程的时候可能是这样讲的 xff1a 进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程 xff0c 是操作系统进行资源分配和调度的一个独立单元 xff0c 是应用程序运行的载体 线程
  • MySQL最左匹配原则,道儿上兄弟都得知道的原则

    自MySQL5 5版本起 xff0c 主流的索引结构转为B 43 树 B 43 树的节点存储索引顺序是从左向右存储 xff0c 在检索匹配的时候也要满足自左向右匹配 目录 一 最左匹配原则的原理二 违背最左原则导致索引失效的情况三 查询优化
  • 在STM32下完成基于FreeRTOS的多任务简单程序

    一 为什么要学习 RTOS 在裸机系统中 xff0c 所有的程序基本都是自己写的 xff0c 所有的操作都是在一个无限的大循环里面实现 现实生活中的很多中小型的电子产品用的都是裸机系统 xff0c 而且也能够满足需求 但是为什么还要学习 R
  • 虚拟机连不上网问题及解决

    虚拟机联网主要涉及四个方面的配合 xff1a 网络和共享中心 xff08 物理机 xff09 虚拟网络编辑器 网络适配器 有线连接的更多设置 xff08 相关配置文件 xff09 网络和共享中心 xff1a 提示 xff1a 需要注意的点是
  • linux命令查看系统硬件的版本(dmidecode)

    dmidecode命令 可以让你在Linux系统下获取有关硬件方面的信息 dmidecode的作用是将DMI数据库中的信息解码 xff0c 以可读的文本方式显示 由于DMI信息可以人为修改 xff0c 因此里面的信息不一定是系统准确的信息
  • git 设置代理和取消代理

    本地开启VPN后 xff0c GIt也需要设置代理 xff0c 才能正常略过GFW xff0c 访问goole code等网站 设置如下 xff08 可复制 xff09 xff1a git config global https proxy
  • 上下文切换理解

    1 上下文的理解 上下文是指 xff0c 每次执行前 xff0c 都会使用需要依赖两个环境 xff0c 分别是CPU寄存器 xff08 cpu中容量小但是速度很快的内存 xff09 和程序计数器 xff08 cpu正在执行的程序位置或者是准
  • debian-11版本虚拟机无法登入root账号

    debian11创建虚拟机时我们设置了root账户密码 xff0c 然而在登入时却在未列出中无法登入root账户 xff0c 如图 1 我们登入普通账号 xff0c 这里不提权是无法保存文件的 enter 输入 i 进入编辑模式 在这个位置
  • 整数加减运算的二进制表示

    两位整数的加减都可看做 一个数加上另一个数 xff0c 首先我们要把数据的二进制表示转化成补码 xff0c 因为在计算机内部 xff0c 数据的加减是按补码进行运算的 A补 43 B补 61 A 43 B 补 xff08 mod 2 n 4
  • TCP服务器端、客户端通讯(赋源码)

    实现通讯 xff0c 我们首先要知道是怎么样的一个流程 xff0c 下图是我画的一个通讯流程图 xff1a 一 Linux服务器端 我是在Ubuntu20 04下进行的 xff0c 使用的是C 43 43 xff0c 引入头文件socket
  • 超详细正点原子STM32F429开发板视频教程笔记01

    文章目录 前言一 GPIO入门知识二 寄存器描述和配置方法1 GPIO寄存器 总结 前言 买了一块正点原子阿波罗stm32f429开发板 xff0c 趁暑假有空看看教学视频 xff0c 之前看过一部分所以从GPIO的原理和配置开始写笔记 提
  • 软件测试之项目总结全攻略

    在我们测试工作过程中 xff0c 由于公司业务发展 xff0c 快速迭代等原因 xff0c 我们遇到的项目以小项目居多 更新界面元素 xff0c 上个活动页 xff0c 优化一下原有的功能等等 xff0c 加上事情繁琐 xff0c 任务多
  • 简历中的项目经历可以怎么写?

    概述 工作这10多年来 xff0c 也经常做招聘的工作 xff0c 面试过的人超过50人次了 xff0c 而看过的候选人的简历则有几百份了 xff0c 但是清晰且能突出重点的简历 xff0c 确实很少遇到 这里基本可以说明一个问题 xff0
  • 教你用Python写一个京东自动下单抢购脚本(Python实现京东自动抢购)

    很多朋友都有网购抢购限量商品的经历 有时候蹲点抢怎么也抢不到 今天小编带你们学习怎么用Python写一个京东自动下单抢购脚本 以后再也不用拼手速拼网速啦 快来一起看看吧 1 问题背景 经过无数次抢购失败后 xff0c 发现商家会不定时的放出
  • 千里独行Thousands of miles to ride alone

    关于三国时期有很多流行的故事 其中最著名的就是千里独行 关羽保护二嫂 xff0c 从徐都出发 xff0c 经过五门 xff0c 斩六将 xff0c 终于在古城与刘备 张飞两兄弟重逢 现在 xff0c 你的任务是为关羽找到跑得比兔子还快的兄弟
  • 北理工-【操作系统】(3)进程通信与死锁

    试题 1 在消息缓冲通信机制中 xff0c 使用的临界资源是 选择一项 xff1a A 信箱 B 整个消息队列 C 没有临界资源 D 消息队列中的某个缓冲区 正确答案是 xff1a 整个消息队列 试题 2 下列关于死锁的叙述中 xff0c
  • linux内核RAID设备管理工具---mdadm

    Linux内核中有一个md multiple devices 模块在底层管理RAID设备 xff0c 它会在应用层给我们提供一个应用程序的工具mdadm xff0c mdadm是linux下用于创建和管理软件RAID的命令 mdadm命令常
  • 北理工·-【操作系统】(2)进程、线程与调度

    试题 1 若系统中只有用户级线程 xff0c 则处理机调度单位是 选择一项 xff1a A 程序 B 线程 C 进程 D 作业 正确答案是 xff1a 进程 试题 2 为了照顾紧迫型作业 xff0c 应采用 选择一项 xff1a A 优先级
  • 北理工-【操作系统】(1)概述

    试题 1 下列关于批处理系统的叙述中 xff0c 正确的是 选择一项 xff1a A 用户不能直接干预自己作业的执行 B 批处理操作系统追求的目标是响应时间 C 批处理操作系统的系统资源利用率不高 D 批处理操作系统的系统吞吐量较小 正确答
  • 关于python使用playsound播放音频:指定的设备未打开,或不被 MCI 所识别。

    python中使用playsound函数是出现以下报错 xff1a Error span class token number 263 span span class token keyword for span command span