有没有办法通过 Kivy 播放实时音频流?

Is there a way to play a live audio stream through Kivy?

我正在尝试创建一个应用程序,您可以在其中收听来自 phone 的广播流。 Kivy 可以吗?

我正在为我的高中广播电台构建这个应用程序。我试过 SoundLoader,但似乎没有用。

这是我用来播放直播的代码。

class ListenWindow(Screen):
    sound = SoundLoader.load('stream.mp3')
    sound.play()

这是我收到的输出。

[WARNING] Deprecated property "<AliasProperty name=filename>" of object "<kivy.core.audio.audio_gstplayer.SoundGstplayer object at 0x03DFE378>" was accessed, it will be removed in a future version
[WARNING] [AudioGstplayer] b"No decoder available for type 'text/uri-list'."
[ERROR  ] [AudioGstplayer] b'Your GStreamer installation is missing a plug-in.'
[INFO   ] [Window      ] Provider: sdl2
[ERROR  ] [AudioGstplayer] b'Internal data stream error.'

我尝试通过 pip 更新 GStreamer,但这并没有解决问题。

Icecast/SHOUTcast 流本质上是 HTTP 渐进式流,其中媒体数据不断编码、流式传输到客户端并回放。当这种类型的流媒体开始时,网络浏览器无法播放流媒体。因此,如果您 link 直接进入流,浏览器将不断下载永无止境的 "file"。

为了解决这个问题,使用了 M3U 和 PLS 播放列表。这个想法是在浏览器中,您可以 link 到已下载并随后在用户的媒体播放器中打开的播放列表。媒体播放器读取播放列表,找到流的实际 URL,然后向流发出自己的 HTTP 请求并播放它。

当您使用 Gstreamer 之类的东西时,要播放您需要使用实际流的流 URL。即需要自己解析M3U或PLS播放列表文件,找到流URL,然后打开。在你的情况下,因为你知道你只使用一个电台,你可以在文本编辑器中打开该播放列表以找到流 URL.