У меня есть поток с загружаемого сервера icecast, и я могу получить информацию из заголовков, выполнив следующие действия:
URLConnection cn = new URL(mediaUrl).openConnection();
cn.connect();
int pos=1;
String x;
String y;
в то время как (cn.getHeaderField (pos)! = null) {x = cn.getHeaderFieldKey (pos); y = cn.getHeaderField (x); Log.e (":::::", "" + x + ":" + y); pos ++; }
Когда я это сделаю, все заголовки, которые я получаю, отображаются как:
content-type: audio / mpeg icy-br: 64 ice-audio-info: ice-samplerate = 22050; ice-bitrate = 64; ice-channels = 2 icy-br: 64 icy-description: RadioStation icy-жанр: классический , New Age, Ambient icy-name: RadioStation Пример icy-private: 0 icy-pub: 1 icy-url: http://exampleradio.com сервер: Icecast 2.3.2 cache-control: no-cache
Однако, если я открываю свой поток в mplayer, я получаю:
ICY Info: StreamTitle='artist - album - trackname'
и при каждом изменении песни отправляется новая информация о треке, которая появляется в mplayer таким же образом.
В android, когда я пытаюсь прочитать ледяную информацию, все, что мне возвращается, равно нулю. Также, как мне получить новую информацию из заголовков во время буферизации из потока? Потому что даже если я попытаюсь прочитать заголовок того, что, как я знаю, существует во время буферизации, например:
Log.e(getClass().getName()," "+cn.getHeaderField("icy-br"));
Все, что мне вернули, - null.
Надеюсь, это имеет смысл, я могу опубликовать дополнительный код по запросу.