为icecast服务器开发客户端

时间:2011-05-19 15:27:22

标签: streaming mp3 aac icecast

我正在为icecast服务器开发客户端(www.icecast.org)。任何人都可以告诉我,他们用于流媒体内容的格式是什么?

我正在查看他们的页面,但根本没有关于流格式的信息。

然后检查了Wireshark跟踪,由于我的理解,我在200 OK响应GET请求时收到的音频数据的格式,它只是一个没有包含任何元数据的普通二进制音频数据,因此与 SHOUTcast HTTP直播(HLS)这是一种相对简单的方法。

是吗?有经验吗?

Wireshark跟踪代码段:

GET /bonton-128.mp3 HTTP/1.1
Host: icecast3.play.cz
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-US
Accept-Encoding: gzip, deflate
Connection: keep-alive


HTTP/1.0 200 OK
Content-Type: audio/mpeg
icy-br:128
ice-audio-info: ice-samplerate=44100;ice-bitrate=128;ice-channels=2
icy-br:128
icy-description:Radio Bonton
icy-genre:Pop / Rock
icy-name:Radio Bonton
icy-pub:0
icy-url:http://www.radiobonton.cz
Server: Icecast 2.3.2
Cache-Control: no-cache

Here are then aac or MPEG data

谢谢和问候,

STeN

2 个答案:

答案 0 :(得分:15)

出于您的目的,Icecast和SHOUTcast是等效的。

他们都使用了一个私有的HTTP版本。实际上,您可以创建一个简单的HTTP请求并使用标准的HTTP客户端库,它几乎总能正常工作。唯一不同的是,SHOUTcast会在其回复中返回ICY 200 OK而不是HTTP 200 OK

现在,如果您发出请求,就像上面所做的那样,您将获得一个可以直接播放的标准音频流。正如您所指出的,MP3和AAC几乎全部使用,但也可以使用其他格式。

如果您需要元数据,则必须告诉服务器您已准备好接收它。您必须在请求中添加此标头:

Icy-MetaData:1

一旦你这样做,你会在响应中看到另一个标题回复给你,例如icy-metaint:8192,这意味着每8192个字节,你将收到一大块元数据。

我不会详细介绍,因为这已有详细记录。无需重新打字:

Pulling Track Info From an Audio Stream Using PHP

http://www.smackfu.com/stuff/programming/shoutcast.html

但是,如果您有任何疑问,请将它们发布在StackOverflow上并将其标记为icecast或shoutcast,我们将很乐意为您提供帮助。

答案 1 :(得分:0)

我刚刚完成了一个无线电台项目,他们使用了冰球。我想用share you the radio player和一些PHP Wrappers来获取来自centova,icecast和lastfm的信息。