MP3文件突然不玩kivy

时间:2015-01-20 12:04:04

标签: python audio mp3 kivy

我有一个游戏,上次我检查过,工作正常。我今天遇到的问题,由于某种原因我还没想到,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()

我真的不知道为什么这不起作用,有人能说清楚吗?

3 个答案:

答案 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 characterparentheses。 因为mpg321无法读取。

或者再次选择使用pymedia

答案 2 :(得分:0)

class PressMe(BoxLayout):

   self.sound = SoundLoader.load('point.mp3')

def mycallback(self):
    self.sound.play()