2

背景: 我正在使用 html 广播的双缓冲方法来播放广播。我使用http://www.smackfu.com/stuff/programming/shoutcast.html从流中获取元数据信息

问题 我有三个问题。
1-我已经使用 urlconnection 和 inputstream 来收听广播。我不想打开新连接来检索元数据。但是当我试图从同一个输入流中获取两者时,我再也听不到收音机了。我想这是不可能的,我必须使用两个单独的连接?性能不是很差吗?

2-当应用程序启动时,我检索当前歌曲的信息。没问题。但是,当歌曲更改时,我如何获得通知。据说当歌曲改变时服务器会发送信息。但我正在启动 URL 连接,获取输入流,检索元数据并关闭连接。我不明白我应该如何通知服务器?我应该保持连接打开吗?

3-最后一个问题。AFAIK 渐进式流媒体在 android 2.2 之前是不可能的。这仅适用于http吗?如果协议是 rtsp,我可以在 android 2.2 之前进行渐进式流媒体吗?请任何人说清楚和明确?

非常感谢,

4

2 回答 2

3
  1. 您不应该为元数据打开新连接。元数据集成到 MP3 流中(所有这些都在您发布的链接中进行了描述)。
  2. 如果您显然关闭连接,您将无法再接收 MP3 流或元数据。
  3. 请参阅:使用 MediaPlayer 从 Android 中的 URL 流式传输音频?
于 2011-09-29T07:24:14.603 回答
2

您必须记住 icy-mettaint 标头字段中的数字。

从流中接收到那么多字节(发送到音频解码器)后,您必须期待元数据部分,并读取它(也不将这些数据发送到音频解码器)。然后您再次从流中接收编码音频,并在 icy-metait 字节后继续定期读取元数据的过程。

这意味着服务器会定期发送元数据(有关艺术家/歌曲名称的信息),并且您的代码必须将输入流拆分为音频和元数据。

于 2011-09-29T07:28:30.050 回答