MP3文件突然无法播放

问题描述 投票:1回答:3

我有一个游戏,上次我检查过,效果很好。我今天遇到的问题,由于某些原因我还没有弄清楚,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()

我真的不知道为什么这不起作用,任何人都可以阐明这一点吗?

python audio mp3 kivy
3个回答
2
投票

当加载程序返回NoneType时,通常意味着任何可用的提供程序都无法加载该文件。在Android上,本机提供MP3支持,但对于Ubuntu,则需要安装gstreamer。究竟为什么它停止工作,可能取决于您如何安装Kivy,但是如果您是通过pip或通过git存储库构建的,则系统上的库可能已更新。

确保已安装libgstreamer1.0-dev并重建Kivy(如果从pip或git安装)。如果那没有帮助,则可能更容易在我们的IRC channel #kivy on freenode上解决此问题。


0
投票

此为我推荐。在终端Linux(Ubuntu)上播放mp3。您可以开发此可选控件。

$ sudo apt-get install mpg321
$ mpg321 yourmusic.mp3

但是当我们使用mpg321时,需要考虑一些事项,即:mp3文件名不能使用space characterparentheses。因为mpg321无法读取。

或再次选择使用pymedia


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.