У меня есть поток загрузки с сервера icecast, и я могу получить информацию в заголовках, выполнив следующие действия:
URLConnection cn = new URL(mediaUrl).openConnection();
cn.connect();
int pos=1;
String x;
String y;
while (cn.getHeaderField (pos)! = Null)
{
х = cn.getHeaderFieldKey (позы);
y = cn.getHeaderField (x);
Log.e (":::::", "" + x + ":" + y);
пос ++;
}
Когда я делаю это, все заголовки, которые я получаю, отображаются как:
тип контента: аудио / MPEG
ледяной br: 64
ice-audio-info: частота дискретизации льда = 22050, битрейт льда = 64; каналы льда = 2
ледяной br: 64
ледяное описание: RadioStation
icy-жанр: классический, нью эйдж, эмбиент
icy-name: RadioStation Пример
частный лед: 0
ледяной паб: 1
URL-адрес: http://exampleradio.com
сервер: Icecast 2.3.2
управление кешем: без кеша
Однако, если я открою свой поток в mplayer, я получу:
ICY Info: StreamTitle='artist - album - trackname'
и каждый раз, когда песня меняется, информация о новой дорожке отправляется в mplayer одинаково.
В Android, когда я пытаюсь прочитать ледяную информацию, все, что я получаю, является нулевым. Кроме того, как мне получить новую информацию из заголовков, пока я буферизирую из потока? Потому что даже если я попытаюсь прочитать заголовок чего-то, что я уже знаю, существует во время буферизации, например:
Log.e(getClass().getName()," "+cn.getHeaderField("icy-br"));
Все, что мне возвращают, равно нулю.
Надеюсь, это имеет смысл, я могу выложить больше кода по запросу.