【发布时间】:2011-01-30 12:19:40
【问题描述】:
我可以使用 MediaPlayer 接口成功收听音频流,但是如何获取流的属性,例如当前比特率或流文本(许多流,例如在线收音机,包括当前播放的曲目)?
我试图找到这些信息但找不到,如果这些东西可能在 android 开发网站的某个地方有一个列表,其中列出了各种可用的“属性”?
【问题讨论】:
标签: android properties stream media-player
我可以使用 MediaPlayer 接口成功收听音频流,但是如何获取流的属性,例如当前比特率或流文本(许多流,例如在线收音机,包括当前播放的曲目)?
我试图找到这些信息但找不到,如果这些东西可能在 android 开发网站的某个地方有一个列表,其中列出了各种可用的“属性”?
【问题讨论】:
标签: android properties stream media-player
首先,Android DEV 网站是包含所有课程信息的网站 - 但有时很难找到您需要的信息。在这种情况下,检查类的 java 源代码会很有帮助。
快速浏览 SDK,有一个 onInfoListener 接口,您可以在扩展 MediaPlayer 的类中实现它。这需要您实现public boolean onInfo(MediaPlayer mp, int what, int extra)。
http://developer.android.com/reference/android/media/MediaPlayer.OnInfoListener.html 表示有什么=MEDIA_INFO_METADATA_UPDATE。
但是 - 检查谷歌会给出这个永远不会被调用的想法:-/ 所以最终你只能靠自己了......
【讨论】:
我可能会让这变得比它需要的更难,但是您可以使用Jlayer 或其他一些 MP3 解码库来解码流的帧以获得您正在寻找的信息。不确定是否有办法只使用 Android sdk。
【讨论】:
如果您的流是一个shoutcast/icecast 流,那么您可以使用http://code.google.com/p/streamscraper/ 的实用程序类来提取包括歌曲标题在内的元数据。 或者,您可以构建自己的元数据提取器。请查看http://www.smackfu.com/stuff/programming/shoutcast.html 了解更多信息。
【讨论】:
http://yp.shoutcast.com/Metadata_Info1.php?surl=<stream_url>提供了一个轻量级的网络服务。绝对矫枉过正并创建许多依赖项