我正在尝试创建一个应用,您可以在其中收听手机的广播流。 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,但这不能解决问题。
答案 0 :(得分:0)
Icecast / SHOUTcast流本质上是HTTP Progressive流,其中媒体数据被连续编码,流式传输到客户端并进行播放。当这种类型的流式传输开始时,Web浏览器无法播放该流。因此,如果直接链接到流,则浏览器将连续下载永无休止的“文件”。
要解决此问题,使用了M3U和PLS播放列表。这个想法是在浏览器中,您可以链接到一个播放列表,该播放列表已下载并随后在用户的媒体播放器中打开。媒体播放器读取播放列表,找到流的实际URL,然后向流提出自己的HTTP请求并播放它。
使用诸如Gstreamer之类的内容时,要播放流,您需要使用实际的流URL。也就是说,您需要自己解析M3U或PLS播放列表文件,找到流URL,然后将其打开。对于您的情况,由于您知道只使用一个电台,因此只需在文本编辑器中打开该播放列表即可找到流URL。