【问题标题】:Android MediaPlayer audio streaming - which URL to use?Android MediaPlayer 音频流 - 使用哪个 URL?
【发布时间】:2014-02-05 13:01:36
【问题描述】:

我正在学习 android 编程,并且一直在尝试使用音频流媒体播放器。 Android guide 很明显,您只需要指定 URL,但我相当坚持弄清楚该 URL 应该是什么,我应该在代码中包含流式传输各种广播电台。 (我不是想在互联网上的某个地方播放 mp3 文件,而是实际上使用“真正的”流媒体)。
我在下面描述的是我到目前为止所发现的,并且我已经让它工作得很好,但这一切似乎都很笨拙,我的问题是:有没有更好的方法来确定要使用哪些 URL?
首先,我在Basics of streaming protocols 上看到了一篇很棒的文章。 其次,我查看了广播,并尝试选择它使用的 URL。对于我查看的广播电台(例如 www.rockradio1.com),它正在启动一个 .pls 文件(根据维基百科的播放列表文件),VLC 解释并开始播放流媒体音乐。 但是,将 .pls 文件提供给我的 android 程序不起作用。 然后我查看了 .pls 文件,找到了类似的内容:

[playlist]
numberofentries=5
File1=http://91.121.7.49:8000
Title1=(#1 - 177/400) RockRadio1.Com - Classic Hard Rock and Heavy Metal Mix, 24/7 Live Requests / www.rockradio1.com
Length1=-1
File2=http://91.121.195.222:8000
Title2=(#2 - 186/400) RockRadio1.Com - Classic Hard Rock and Heavy Metal Mix, 24/7 Live Requests / www.rockradio1.com
Length2=-1
File3=http://91.121.75.155:8000
Title3=(#3 - 190/400) RockRadio1.Com - Classic Hard Rock and Heavy Metal Mix, 24/7 Live Requests / www.rockradio1.com
Length3=-1
File4=http://77.74.192.50:8000
Title4=(#4 - 70/100) RockRadio1.Com - Classic Hard Rock and Heavy Metal Mix, 24/7 Live Requests / www.rockradio1.com
Length4=-1
File5=http://176.31.235.147:8000
Title5=(#5 - 351/500) RockRadio1.Com - Classic Hard Rock and Heavy Metal Mix, 24/7 Live Requests / www.rockradio1.com
Length5=-1
Version=2

当我将其中一个 URL 提供给 Android 程序时,它工作正常。 在浏览rockradio1网站时,我发现了一个带有

的播放列表文件
File1=http://rockradio1-3.mixstream.net 

插入该 URL 也可以。 但是,获取这些 URL 似乎有点棘手,我猜想可能有一种更复杂的方式来操作正确的流式客户端。就我个人而言,我只是将其用作学习练习,而不是尝试开发任何商业软件,但我会对如何更好地确定要使用的 URL 感兴趣。

【问题讨论】:

    标签: android android-mediaplayer audio-streaming


    【解决方案1】:

    您能否编写一个包装函数,从您定义的 URL 下载 .pls 文件,然后从中提取 URL? This SO question 似乎解决了这样做的问题。那里的答案中嵌入了一些代码,可能可以满足您的需求。

    【讨论】:

    • 因此,您的建议是使用类似 yp.shoutcast.com/sbin/tunein-station.pls?id=558051 形式的直播 URL 来获取 PLS 文件,然后对其进行解析并将 URL 从其中提供给 Android MediaPlayer。是的,这听起来是个好方法。感谢您的链接;我会试一试的。我认为 id 是相当静态的。
    • 差不多。只要您将流式 URL 选择基于当前直播网站(或您从中提取数据的任何地方)上的当前内容,那么您就不应该遇到任何问题。不面向公众(因此可能会更改)的硬编码 URL 可能是一个问题。你指的是什么ID?您可以扩展链接的 SO 问题中给出的解析器方法,以提取标题和其他元数据。这实际上只是逐行浏览文件并读取第一个字符以查看该行代表什么的问题。
    • 关于 id,我的意思是,当您查看直播网站时,所有广播电台都有一个格式为 yp.shoutcast.com/sbin/tunein-station.pls?id=558051 的 URL,其中每个广播电台的 id 都不同。 (他们提供的工具提示是不同的 - 您必须复制链接位置才能获得实际的 URL)。在歌曲标题发生变化时显示它们会很好,但是因为这必须在流协议中,所以 MediaPlayer 必须显示(如果我在视图中显示它)或者可能在 MediaPlayer.OnInfoListener 中传递了一些东西。需要更多调查!
    猜你喜欢
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多