首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当前速成歌曲标题

当前速成歌曲标题
EN

Stack Overflow用户
提问于 2013-01-26 18:54:07
回答 1查看 7.6K关注 0票数 1

我读过一些问题,但没有一个解决我的问题。我制作了一个简单的客户端,通过icecast2服务器读取soundstream。我读声音的时候:

代码语言:javascript
复制
    a = new WMPLib.WindowsMediaPlayer();
    a.URL = "http://radiolink:8000/music";
    a.controls.play();

这是工作,我听音乐。现在我想读一下这首歌的标题。我在这里发现,我必须创建一个请求,比如:

代码语言:javascript
复制
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)。能帮我,让我用正确的方式正确读取数据吗?

//解决了第一部分。现在我接受了这一切:

冰-br:128冰-音频-信息: ice-samplerate=44100;ice-bitrate=128;ice-channels=2冰-描述:无线电fff冰-类型:各种冰-名称:无线电冰-酒吧:0冰-url:http://url.com冰-metaint: 16000高速缓存-控制:无缓存内容-类型:音频/mpeg

如何读取其他元数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-26 19:44:00

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

您拥有的icy-metaint: 16000头是关键。每隔16,000个字节,您就会得到一个元数据块。该块中的第一个字节表示元数据长度。将其值乘以16,得到长度(以字节为单位)。一旦你这样做了,你就会得到这样的结果:

代码语言:javascript
复制
StreamTitle='Awesome Trance Mix - DI.fm';StreamUrl=''

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

对于PHP,我已经回答了同样的问题,但是无论哪种语言:Pulling Track Info From an Audio Stream Using PHP,概念都是一样的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14540380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档