【问题标题】:Developing the client for the icecast server为 icecast 服务器开发客户端
【发布时间】:2011-08-28 23:56:39
【问题描述】:

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

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

然后我检查了 Wireshark 跟踪,由于我了解我在对 GET 请求的 200 OK 响应中收到的音频数据的格式,它只是一个纯二进制音频数据,不包含任何元数据,因此与SHOUTcastHTTP Live Streaming (HLS) 这是相对简单的方法。

对吗?有经验吗?

Wireshark 跟踪 sn-p:

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

感谢和问候,

斯特恩

【问题讨论】:

    标签: streaming mp3 aac icecast internet-radio


    【解决方案1】:

    出于您的目的,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 或 saycast,我将很乐意为您提供帮助。

    【讨论】:

    • 嗨,我用 curl 和你建议的标题试过了,你是对的!有元数据。唯一的区别是我收到的是 HTTP 200 OK,而不是 ICY 200 OK GET /bonton-128.mp3 HTTP/1.1 User-Agent: curl/7.19.5 Host: icecast3.play.cz Accept: */* Icy-MetaData:1 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 icy-metaint:16000
    • 是的,这取决于服务器。 Icecast 返回 HTTP,而 SHOUTcast 返回 ICY。无论哪种方式都无所谓,其他一切都相同。很高兴看到你成功了!
    【解决方案2】:

    我最近刚刚完成了一个广播电台项目,他们使用了icecast。我想share you the radio player 和一些我用来从 centova、icecast 和 lastfm 获取信息的 PHP Wrapper。

    【讨论】:

    • 嗨,流媒体服务器只有两种类型吗?
    • @AnkitSrivastava 流媒体服务器有很多种。许多协议、许多容器、许多编解码器以及以上所有内容的许多组合。
    猜你喜欢
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    相关资源
    最近更新 更多