python播放音频及playsound模块解除占用的3种方法

python播放音频文件及playsound模块解除占用的3种方法

pip install playsound

播放mp3文件

from playsound import playsound
import os

def play_mp3(audio_path):
    """
    播放 mp3
    :param audio_path: mp3 路径
    :return:
    """
    playsound(audio_path)
    # 删除文件(因为playsound一直占用mp3,不删除,循环就报错。)
    os.remove(audio_path)

if __name__ == '__main__':
    audio_path = 'audio.mp3'
    play_mp3(audio_path)

使用playsound模块遇到的问题

这个模块的问题,就是无法解除占用。如果播放完后想重新播放或者进行修改就会提示拒绝访问。
例如:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hNFpDYfk-1593483545108)(C:\Users\xiahuadong\Documents\csdn博客\python播放音频文件1.png)]
当循环执行的时候
结果提示错误,因为auido.mp3文件被playsound模块占用了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R2DhDaIW-1593483545110)(C:\Users\xiahuadong\Documents\csdn博客\python播放音频文件2.png)]

python下playsound模块解除占用的3种方法

1 修改源代码:

from playsound import playsound
import os
playsound('audio.mp3')
os.remove('audio.mp3')#删除文件,防止被占用

2 修改playsound模块

在python安装目录下的
~\Python36\Lib\site-packages
找到playsound.py
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rqAJx8Pz-1593483545111)(C:\Users\xiahuadong\Documents\csdn博客\python播放音频文件3.png)]
用IDE打开
python播放音频及playsound模块解除占用的3种方法_第1张图片
找到这里
python播放音频及playsound模块解除占用的3种方法_第2张图片
增加代码 winCommand(‘close’, alias)
python播放音频及playsound模块解除占用的3种方法_第3张图片
就ok了!

3 另一种修改playsound模块

python播放音频及playsound模块解除占用的3种方法_第4张图片
python播放音频及playsound模块解除占用的3种方法_第5张图片
我用windows+python,所以在playsound里的winCommand里添加上边绿框的代码

while True:
    if winCommand('status', alias, 'mode').decode() == 'stopped':
        winCommand('close', alias)
        break
一定在“winCommand('play', alias, 'from 0 to', durationInMS.decode())”位置后添加代码。实测没问题。

你可能感兴趣的:(python播放音频及playsound模块解除占用的3种方法)