我有一个游戏,上次我检查过,效果很好。我今天遇到的问题,由于某些原因我还没有弄清楚,kivy不会播放mp3文件,但仍然会播放wavs。重申一下,这以前从来都不是问题,该游戏可以在我的ubuntu linux os和android上运行,而无需进行任何编辑:实际上,它在我的Android上仍然可以正常运行。我现在在ubuntu上启动游戏时遇到以下错误:
File "/home/yerman/python/bird/gamescreens.py", line 107, in update
point_play = self.point.play
AttributeError: 'NoneType' object has no attribute 'play'
我也不知道为什么回溯中point_play
和=
之间有这样一个空格,因为它与文件中的空格不同。我很确定自从我上次玩游戏以来,我没有进行任何更改。 mp3文件本身也没有错。将文件转换为wav并使用它可以正常工作。
然后我写了这个小脚本并以相同的结果运行它:
main.py:
import kivy
kivy.require('1.8.0')
import sys
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.core.audio import SoundLoader
class PressMe(BoxLayout):
sound = SoundLoader.load('point.mp3')
def mycallback(self):
self.sound.play()
class myApp(App):
def build(self):
return PressMe()
if __name__ == '__main__':
myApp().run()
kv文件:
#: kivy 1.8.0
<PressMe>:
Button:
text: 'press me'
on_press: root.mycallback()
我真的不知道为什么这不起作用,任何人都可以阐明这一点吗?
当加载程序返回NoneType时,通常意味着任何可用的提供程序都无法加载该文件。在Android上,本机提供MP3支持,但对于Ubuntu,则需要安装gstreamer。究竟为什么它停止工作,可能取决于您如何安装Kivy,但是如果您是通过pip或通过git存储库构建的,则系统上的库可能已更新。
确保已安装libgstreamer1.0-dev并重建Kivy(如果从pip或git安装)。如果那没有帮助,则可能更容易在我们的IRC channel #kivy on freenode上解决此问题。
此为我推荐。在终端Linux(Ubuntu)上播放mp3。您可以开发此可选控件。
$ sudo apt-get install mpg321
$ mpg321 yourmusic.mp3
但是当我们使用mpg321
时,需要考虑一些事项,即:mp3文件名不能使用space character
或parentheses
。因为mpg321无法读取。
或再次选择使用pymedia