当前冰流流行歌曲的标题

时间:2013-01-26 18:54:08

标签: c# title icecast

我已经回答了一些问题,但没有人解决了我。 我已经制作了一个简单的客户端来读取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);

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

//解决了frist部分。 现在我回忆起那个:

  

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 Content-Type:audio / mpeg

如何阅读其他元数据?

1 个答案:

答案 0 :(得分:1)

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

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

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

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

我在这里为PHP回答了同样的问题,但无论使用何种语言,概念都是一样的:Pulling Track Info From an Audio Stream Using PHP