11

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

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

然后我检查了 Wireshark 跟踪,由于我了解我在对 GET 请求的 200 OK 响应中收到的音频数据的格式,它只是一个纯二进制音频数据,不包含任何元数据,因此与SHOUTcastHTTP相比直播(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

谢谢并恭祝安康,

不锈钢

4

2 回答 2

17

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

他们都使用了一个混蛋版本的 HTTP。事实上,您可以发出一个简单的 HTTP 请求并使用标准的 HTTP 客户端库,它几乎总是可以正常工作。唯一不同的是 SHOUTcast 将返回ICY 200 OK而不是HTTP 200 OK在其响应中。

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

如果你想要元数据,你必须告诉服务器你准备好接收它。您必须将此标头放在您的请求中:

Icy-MetaData:1

完成此操作后,您将在响应中看到另一个标头返回给您,例如icy-metaint:8192,这意味着每 8192 个字节,您将收到一大块元数据。

我不会详细介绍,因为这已经有据可查。无需重新键入轮子:

使用 PHP 从音频流中提取音轨信息

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

但是,如果您在进行过程中遇到问题,请将它们发布在 StackOverflow 上并将它们标记为 icecast 或 saycast,我将很乐意为您提供帮助。

于 2011-05-20T13:19:22.913 回答
0

我最近刚刚完成了一个广播电台项目,他们使用了icecast。我想与您分享收音机播放器和一些我用来从 centova、icecast 和 lastfm 获取信息的 PHP Wrapper。

于 2013-10-07T21:39:09.503 回答