当前冰流流行歌曲的标题
我已经回答了一些问题,但没有人解决了我。 我已经建立了一个简单的客户端来读取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从音频流中提取音轨信息