Skip to main content
 首页 » 编程设计

android之使用kivy在android和IOS中传输音频(mp3)

2024年10月25日12dyllove98

我已经在 fedora 20 上为 python 2.7 安装了 kivy 版本 1.8.1

因为我是kivy的新手我想知道我是否可以在android和IOS中使用kivy进行音频流

我试过一个例子,但它甚至不能在我的桌面上播放

from kivy.app import App 
from kivy.core.audio import SoundLoader 
 
class TestApp(App): 
    def build(self): 
        sound = SoundLoader.load('http://194.106.198.57:8090/club_low.mp3') 
        if sound: 
            print("Sound found at %s" % sound.source) 
        print("Sound is %.3f seconds" % sound.length) 
        sound.play() 
TestApp().run() 

以上代码的输出:

[INFO              ] Kivy v1.8.0 
[INFO              ] [Logger      ] Record log in /home/mohammad/.kivy/logs/kivy_14-09-11_13.txt 
[INFO              ] [Factory     ] 157 symbols loaded 
[DEBUG             ] [Cache       ] register <kv.lang> with limit=None, timeout=Nones 
[DEBUG             ] [Cache       ] register <kv.image> with limit=None, timeout=60s 
[DEBUG             ] [Cache       ] register <kv.atlas> with limit=None, timeout=Nones 
[INFO              ] [Image       ] Providers: img_tex, img_dds, img_pygame, img_gif (img_pil ignored) 
[DEBUG             ] [Cache       ] register <kv.texture> with limit=1000, timeout=60s 
[DEBUG             ] [Cache       ] register <kv.shader> with limit=1000, timeout=3600s 
[DEBUG             ] [Audio       ] register SoundPygame 
[INFO              ] [Audio       ] Providers: audio_pygame (audio_pygst, audio_sdl ignored) 
[DEBUG             ] [App         ] Loading kv </home/work/python/pama_radio/andriod_app/test.kv> 
[DEBUG             ] [App         ] kv </home/work/python/pama_radio/andriod_app/test.kv> not found 
[WARNING           ] [Audio       ] Unable to find a loader for <http://194.106.198.57:8090/club_low.mp3> 
 Traceback (most recent call last): 
   File "/home/work/python/pama_radio/andriod_app/main.py", line 11, in <module> 
     TestApp().run() 
   File "/usr/lib/python2.7/site-packages/kivy/app.py", line 766, in run 
     root = self.build() 
   File "/home/work/python/pama_radio/andriod_app/main.py", line 9, in build 
     print("Sound is %.3f seconds" % sound.length) 
 AttributeError: 'NoneType' object has no attribute 'length' 
 
Process finished with exit code 1 

我试过视频和视频播放器模块,它只能在桌面上播放,不能在安卓上使用(我没试过 IOS) 如果我可以使用其他格式(如 aac 和 ogg),请告诉我

请您参考如下方法:

发生这种情况是因为在桌面上您使用的是 gstplayer - 基于 GStreamer 的音频提供程序 - 而 Android 使用 pygame 作为其音频提供程序。虽然 GStreamer 支持通过网络传输音频,但 pygame 不支持。

如果您查看在桌面上运行您的应用程序的输出,您应该看到以下内容:

[INFO   ] [Audio       ] Providers: audio_gstplayer, audio_pygame (audio_ffpyplayer, audio_sdl ignored) 

这意味着 Kivy 同时使用 gstplayer 和 pygame - 如果 gstplayer 不能处理给定的媒体类型,那么 Kivy 将尝试使用 pygame。但是 gstplayer 在 Android 上不可用:

[INFO              ] [Audio       ] Providers: audio_pygame (audio_pygst, audio_sdl ignored) 

在 iOS 上,使用了 SDL 音频提供程序,我相信它可能支持流式传输,所以你可能会在那里有更好的运气。你也可以submit an issue on github请求我们添加此功能。