2011-05-19 171 views
7

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

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

我已经检查了Wireshark跟踪,并且由于我理解了我在200 OK响应GET请求内收到的音频数据的格式,它只是一个普通的二进制音频数据,没有包含任何元数据,因此与SHOUTcastHTTP Live Streaming(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 

感谢和问候,

斯登

回答

13

你的目的,和的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

但是,如果你这样做,你去有疑问,请他们在计算器上,并将其标记为的Icecast或Shoutcast一样,我会很乐意为您提供帮助。

+0

嗨,我试着用你建议的标题卷曲,你是对的!有元数据。唯一的区别是我收到** HTTP 200 OK **,而不是** ICY 200 OK **'GET /bonton-128.mp3 HTTP/1.1 User-Agent:curl/7.19.5 主机:icecast3。玩。CZ 接受:*/* 冰 - 元数据:1 HTTP/1.0 200 OK 内容类型:音频/ MPEG 冰冷-BR:128 冰音频信息:冰采样率= 44100;冰比特率= 128;冰通道= 2 冰冷-BR:128 冰冷-描述:无线电Bonton 冰冷流派:流行音乐/摇滚 冰冷-名称:无线电Bonton 冰冷-PUB:0 冰冷-的URL:http:/ /www.radiobonton.cz Server:Icecast 2.3.2 Cache-Control:no-cache ice-metaint:16000' – STeN 2011-05-20 15:36:27

+0

是的,这取决于服务器。 Icecast返回HTTP,SHOUTcast返回ICY。无论哪种方式无关紧要,其他都是一样的。高兴地看到你的工作! – Brad 2011-05-20 15:52:32

0

我刚刚完成了一个广播电台的项目,他们在哪里使用了icecast。我想要share you the radio player以及一些我用来从centova,icecast和lastfm获取信息的PHP Wrappers。

+0

嗨只有两种类型的流服务器? – 2016-08-25 20:40:04

+0

@AnkitSrivastava有很多类型的流媒体服务器。许多协议,许多容器,许多编解码器以及上述所有组合。 – Brad 2018-02-15 03:09:58