【问题标题】:Is there a way to play a live audio stream through Kivy?有没有办法通过 Kivy 播放实时音频流?
【发布时间】:2020-01-01 02:54:24
【问题描述】:

我正在尝试创建一个应用程序,您可以在其中收听手机中的广播流。 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,但这并没有解决问题。

【问题讨论】:

  • 我从未使用过 Kivy,但您要播放的流格式是什么?该错误消息暗示您没有使用正确的 URL。这是一个 SHOUTcast 服务器,碰巧吗?
  • 我正在使用我下载的 mp3 文件。所以我正在尝试播放该文件。这是一个冰播服务器。
  • 您确定您下载的是 MP3 而不是 M3U?
  • 原来是m3u文件,后来我改成了mp3。在我这样做之后,它仍然在 VLC 中播放。所以我觉得没问题。它仍然不起作用,但给出了不同的错误。
  • 一条评论太长[INFO ] [AudioGstplayer] Using Gstreamer 1.16.0.0 [INFO ] [Audio ] Providers: audio_gstplayer, audio_sdl2 (audio_ffpyplayer ignored) [WARNING] [Audio ] Unable to find a loader for &lt;D:\fredi\Python Projects\wahsapp\stream.m3u&gt; Traceback (most recent call last): File "D:\fredi\Python Projects\wahsapp\WAHS.py", line 17, in &lt;module&gt; class ListenWindow(Screen): File "D:\fredi\Python Projects\wahsapp\WAHS.py", line 19, in ListenWindow sound.play() AttributeError: 'NoneType' object has no attribute 'play'

标签: python kivy audio-streaming internet-radio


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    • 2012-12-09
    相关资源
    最近更新 更多