我读过一些问题,但没有人解决我的问题。
我制作了一个简单的客户端来通过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
)。
可以帮助我,让我以正确的方式正确读取数据吗?
// 解决了第一部分。
现在我收到:
icy-br:128,128 冰音频信息:
ice-samplerate=44100;ice-bitrate=128;ice-channels=2 icy-描述:
广播 fff 冰冷流派: 各种冰冷名称:
广播冰酒吧:0 冰酒吧:http://url.com冰冷-metaint:
16000 缓存控制:无缓存内容类型:音频/mpeg
如何读取其他元数据?
SHOUTcast/Icecast 流的元数据不在标头中,而是在实际流本身中。
That icy-metaint: 16000
你拥有的标题是关键。每 16,000 字节,您将获得一个元数据块。该块中的第一个字节指示元数据长度。将其值乘以 16 即可得到长度(以字节为单位)。一旦你这样做了,你最终会得到这样的结果:
StreamTitle='Awesome Trance Mix - DI.fm';StreamUrl=''
它将在末尾填充空字节,直到达到块的长度。
我在这里为 PHP 回答了同样的问题,但无论什么语言,概念都是相同的:使用 PHP 从音频流中提取曲目信息
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)