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

Pygame 播放背景音乐卡顿

时间:2024-02-16 22:44:07浏览次数:24  
标签:背景音乐 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

相关文章

  • 解决Pygame精灵会跳但不会走的问题
    根据我从事几年游戏开发的经验,我们知道在Pygame中,精灵(Sprite)是游戏中的基本元素,通常代表游戏中的角色、物体或动画。精灵可以执行各种动作,包括移动、跳跃、碰撞检测等。但是如果我们遇到Pygame精灵能够跳跃但不能走动,可能有多种问题存在,废话不多说,直接看下面详细过程,相信看过了懂的......
  • 【Unity】记一次卡顿优化(由3D资源面数过多引起)
    这个优化方法可能仅对我有效,我只是做一个记录条件:模型很大,并且shader中使用了Smoothness优化方法打开Mesh引用的模型修改模型Normal为calculate修改SmoothnessSource为fromAngle修改SmoothingAngle降到你可以接收的值,我设置的是20。在unity文档中说的是,通常SmoothingAn......
  • RTSS 降帧 减少游戏卡顿
    原理:降低帧数,减少CPU/GPU的负担,让GPU可以比较平均地产出视频帧,均匀的帧数可以减少卡顿感。使用方法:下载安装MSIAfterburnerhttps://www.msi.com/Landing/afterburner/graphics-cards(会附带RTSS)打开MSIAfterburner,设置监控功能,对应想要监控的勾选OSD选项,方便查看效果......
  • pygame学习(一)——pygame库的导包、初始化、窗口的设置、打印文字
    导语 pygame是一个跨平台Python库(pygamenews),专门用来开发游戏。pygame主要为开发、设计2D电子游戏而生,提供图像模块(image)、声音模块(mixer)、输入/输出(鼠标、键盘、显示屏)模块等。使用pygame,理论上可以开发设计市面上所有的2D类型游戏。优点:pygame免费、开源,支持多种操作系统,具有......
  • c# 数据放入excel导出,卡顿
    前言:导出数据到Excel,导出的时候特别卡顿原代码:usingSystem;usingSystem.Collections.Generic;usingSystem.Data;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceIPC.Helper{classExcelExportUtil{publicstatic......
  • html中添加背景音乐自动播放
    参考: https://www.runoob.com/try/try.php?filename=tryhtml5_av_prop_autoplayhttps://www.mchweb.net/mcbach/1650918861981130752.html 现在的浏览器对于audio、video标签的页面加载时都无法自动播放,各大官方给的意见是自动播放会吵人,只有在静音的模式 muted="true"下......
  • WPF UI线程卡顿的一些理解
    WPFMVVM模型中线程分为UI线程(主线程)和其他线程(新建的线程)UI线程主要工作:1、负责响应外部的输入事件2、负责渲染UI界面,包括绘图、动画等其他线程:1、负责进行数据采集处理2、负责进行消息的分发 实际的工作中我们要合理使用线程,特别是大量的数据展示,图表动画渲染。不然很......
  • 电脑卡顿解决记
    缘起最近我的电脑突然卡的不行,卡到什么程度呢,最明显的就是B站的视频封面,历史记录列表都刷不出来了,别的网站也是非常的慢,好像所有按需加载的东西都变得非常慢,甚至直接加载失败。解决之路我首先是重启了下我家里唯一的网络设备——光猫,问题依旧,而且光猫状态正常,那就只能是电脑问......
  • 使用 Python 和 Pygame 制作游戏:第六章到第八章
    第六章:贪吃虫原文:inventwithpython.com/pygame/chapter6.html译者:飞龙协议:CCBY-NC-SA4.0    如何玩贪吃虫贪吃虫是Nibbles的克隆。玩家开始控制一个不断在屏幕上移动的短蠕虫。玩家无法停止或减慢蠕虫,但他们可以控制它转向的方向。红苹果随机出现在屏幕上,玩家必......
  • 使用 Python 和 Pygame 制作游戏:第九章到第十章
    第九章:推星星原文:inventwithpython.com/pygame/chapter9.html译者:飞龙协议:CCBY-NC-SA4.0         如何玩推星星推星星是Sokoban或“箱子推动者”的克隆。玩家位于一个房间,里面有几颗星星。房间中的一些瓷砖精灵上有星星标记。玩家必须想办法将星星推到有星......