首页 > 其他分享 >Pygame 播放背景音乐卡顿

Pygame 播放背景音乐卡顿

时间:2024-02-16 22:44:07浏览次数:39  
标签:背景音乐 py MyWork command Pygame playsound 卡顿 mp3

Pygame是常用的游戏开发库之一。然而在使用Pygame的过程中,却出现了播放背景音乐卡顿的问题。表现为咯咯咯的噪音。

检查Pygame版本,为2.5.2。降级至1.9.6,此时代码报错:

Traceback (most recent call last):
  File "D:\MyWork\Code_Learning\PythonLearning\Pygame\test2.py", line 4, in <module>
    pygame.mixer.init()
pygame.error: No available audio device

 

改到2.0.0版本,代码正常运行,但卡顿再次出现。Python版本为3.8.10。

 

 

解决办法:

1. 采用winsound库来播放音乐。

坏处是必须使用wav格式的音频,占用较大。

好处是终于听见了正常的音乐声。

python内置库,所以不用安装。

 

2. 采用playsound库来播放音乐。

然而,这个第三方库有一些bug。需要将原文件的第55行:

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

更改为:

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

不需要主动寻找文件。报错时会自动说文件的路径:

    Error 305 for command:
        open "C:\Users\16581\AppData\Local\Temp\PS_hj5h9ji.mp3"
    在用引号括起的字符串不能指定额外的字符。

    Error 263 for command:
        close "C:\Users\16581\AppData\Local\Temp\PS_hj5h9ji.mp3"
    指定的设备未打开,或不被 MCI 所识别。
Failed to close the file: "C:\Users\16581\AppData\Local\Temp\PS_hj5h9ji.mp3"
Traceback (most recent call last):
  File "D:\MyWork\Code_Learning\PythonLearning\Pygame\test2.py", line 8, in <module>
    playsound.playsound("./src/Hello_How are you.mp3")
  File "D:\MyWork\Code_Learning\PythonLearning\Pygame\Runtime3.8\lib\site-packages\playsound.py", line 44, in _playsoundWin
    _playsoundWin(tempPath, block)
  File "D:\MyWork\Code_Learning\PythonLearning\Pygame\Runtime3.8\lib\site-packages\playsound.py", line 72, in _playsoundWin
    winCommand(u'open {}'.format(sound))
  File "D:\MyWork\Code_Learning\PythonLearning\Pygame\Runtime3.8\lib\site-packages\playsound.py", line 64, in winCommand
    raise PlaysoundException(exceptionMessage)
playsound.PlaysoundException: 
    Error 305 for command:
        open "C:\Users\16581\AppData\Local\Temp\PS_hj5h9ji.mp3"
    在用引号括起的字符串不能指定额外的字符。

根据路径打开这个playsound.py文件(Pycharm就直接点路径点开)即可。

之所以报这个错,是因为python3默认的是utf-8的编码方式,而不是utf-16。这个第三方库有些画蛇添足。总之,去掉即可。

它也可以播放正常的声音。

 

标签:背景音乐,py,MyWork,command,Pygame,playsound,卡顿,mp3
From: https://www.cnblogs.com/hikali/p/18017591

相关文章