我有一个游戏,上次我检查过,工作正常。我今天遇到的问题,由于某种原因我还没想到,kivy不会播放mp3文件,但它仍然会播放wavs。重申一下,这在此之前从来都不是问题,游戏在我的ubuntu linux操作系统和安卓系统上运行时没有顺利编辑:事实上,它在我的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()
我真的不知道为什么这不起作用,有人能说清楚吗?
答案 0 :(得分:2)
当加载程序返回NoneType时,通常意味着任何可用的提供程序都无法加载该文件。在Android上,本机提供MP3支持,但对于Ubuntu,你需要有gstreamer。它停止工作的正确原因可能取决于你如何安装Kivy,但是如果你是通过pip安装或者从git存储库构建的,那么系统上的库可能已经更新了。
确保已安装libgstreamer1.0-dev并重建Kivy(如果从pip或git安装)。如果这没有帮助,那么我们IRC channel #kivy on freenode可能更容易解决此问题。
答案 1 :(得分:0)
这推荐给我..
在终端Linux(Ubuntu)上播放mp3
你可以开发这个选项。
$ sudo apt-get install mpg321
$ mpg321 yourmusic.mp3
但是当我们使用mpg321
时,有一些事情需要考虑,即:
Mp3文件名不能使用space character
或parentheses
。
因为mpg321无法读取。
或者再次选择使用pymedia
答案 2 :(得分:0)
class PressMe(BoxLayout):
self.sound = SoundLoader.load('point.mp3')
def mycallback(self):
self.sound.play()