【问题标题】:Android - How to get metadata from a live audio stream/internet radio channel using urlAndroid - 如何使用 url 从实时音频流/互联网广播频道获取元数据
【发布时间】:2014-08-05 04:54:17
【问题描述】:

我目前正在开发一个音乐流媒体/互联网广播 Android 应用程序,如果您能在这方面帮助我,我将不胜感激。提前致谢!

我可以播放音乐,但我不知道如何获取当前播放的歌曲、专辑封面等信息。如果我能得到这些信息,那真的会对我的应用有所帮助。

我的问题是,我怎么知道或从哪里获得有关当前正在播放的歌曲的信息?正如我注意到的那样,VLC 只需给出一个链接就可以做到这一点。

这是来自 vlc 的屏幕截图。

以下是我尝试过的几个链接:

http://tar.stream.dev.al:9078/listen.pls

http://84.46.147.81:80/m1/mp3

http://stream.radioeger.hu:18000/listen.pls

http://95.110.186.253:8020/magic.mp3

【问题讨论】:

  • 您找到解决方案了吗?什么对你有用?

标签: android audio streaming vlc internet-radio


【解决方案1】:

您可以通过 MediaMetadataRetriever 检索音频元数据,但 MediaMetadataRetriever 不适用于某些 Android 版本上的 URL。所以,使用FFmpegMediaMetadataRetriever 作为解决方法,我建议尝试一下。

【讨论】:

  • 如何获取当前播放歌曲的歌手名?
【解决方案2】:

大多数广播流使用 http 流。压缩的音频数据通常与元数据交织在一起。因此,您将需要一种方法来实时处理 http 流,从而提取任何元数据。对于 Shoutcast,元数据是协议的一部分,以下是 streamripper 的示例:

http://streamripper.cvs.sourceforge.net/viewvc/streamripper/streamripper/ripper.c?revision=1.1.1.1&view=markup

对于经典的 HTTP 流,协议不包含元数据,但容器包含。在这种情况下,您还必须初步解码容器。同样,这里有一个来自 streamripper 的例子。这个使用 libvorbis 来检查容器并获取元数据。然而,它确实必须做一些魔术才能让它正确:

http://streamripper.cvs.sourceforge.net/viewvc/streamripper/sripper_1x/lib/ripogg.c?revision=1.22&view=markup

HTH

【讨论】:

    猜你喜欢
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    • 2014-01-03
    • 2013-01-08
    • 2023-03-28
    相关资源
    最近更新 更多