我有一个来自 icecast 服务器下载的流,我可以通过执行以下操作来获取标题中的信息:
URLConnection cn = new URL(mediaUrl).openConnection();
cn.connect();
int pos=1;
String x;
String y;
while (cn.getHeaderField(pos) != null) { x=cn.getHeaderFieldKey(pos); y = cn.getHeaderField(x); Log.e(":::::",""+x+" : "+y); 正++;}
当我这样做时,我收到的所有标题都显示为:
内容类型:音频/mpeg icy-br:64 ice-audio-info:ice-samplerate=22050;ice-bitrate=64;ice-channels=2 icy-br:64 icy-description:RadioStation icy-genre:古典, New Age, Ambient icy-name : RadioStation 示例 icy-private : 0 icy-pub : 1 icy-url : http://exampleradio.com 服务器 : Icecast 2.3.2 缓存控制 : no-cache
但是,如果我在 mplayer 中打开我的流,我会得到:
ICY Info: StreamTitle='artist - album - trackname'
每次更改歌曲时,新的曲目信息都会以相同的方式在 mplayer 中发送。
在 android 中,当我尝试读取 icy-info 时,我返回的所有内容都是 null。另外,当我从流中缓冲时,我将如何从标头中检索新信息?因为即使我尝试在缓冲时读取我已经知道存在的内容的标题,例如:
Log.e(getClass().getName()," "+cn.getHeaderField("icy-br"));
我得到的只是空值。
我希望这是有道理的,我可以根据要求发布更多代码。