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