当前冰流流行歌曲的标题

我已经回答了一些问题,但没有人解决了我。 我已经建立了一个简单的客户端来读取icecast2服务器的声音流。 我用以下声音读取声音:

a = new WMPLib.WindowsMediaPlayer(); a.URL = "http://radiolink:8000/music"; a.controls.play(); 

它的作品和耳朵音乐。 现在我想读当前歌曲的标题。 我在这里发现我必须创建一个请求:

 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://radiolink:8000/music"); request.Headers.Clear(); request.Headers.Add("GET", " HTTP/1.0"); request.UserAgent = "WinampMPEG/5.09"; request.Headers.Add("Icy-MetaData", "1"); request.KeepAlive = true; WebResponse fifo = request.GetResponse(); Console.WriteLine(fifo.Headers); 

Whit theh代码控制台只写输出( content-type=audio-mpg )。 可以帮助我,并让我以正确的方式正确读取数据?

//解决了第一部分。 现在我记得那个:

icy-br:128,128 ice-audio-info:ice-samplerate = 44100; ice-bitrate = 128; ice-channels = 2 icy-description:radio fff icy-genre:各种冰名:RADIO icy-pub:0 icy -url: http ://url.com icy-metaint:16000 Cache-Control:no-cache内容类型:audio / mpeg

如何阅读其他元数据?

SHOUTcast / Icecast流的元数据不在标题中,而是在实际的流本身中。

那个icy-metaint: 16000你拥有的icy-metaint: 16000头是关键。 每16,000个字节,您将获得一个元数据块。 该块中的第一个字节表示元数据长度。 将其值乘以16以获得以字节为单位的长度。 一旦你这样做,你将最终得到这样的东西:

 StreamTitle='Awesome Trance Mix - DI.fm';StreamUrl='' 

它将在末尾用空字节填充,直到达到块的长度。

我在这里回答了PHP的相同问题,但无论使用何种语言,概念都是相同的: 使用PHP从音频流中提取音轨信息