据我所知,在Icecast源代码之外的任何地方都没有协议规范。这是从数据包嗅探中发现的:
音频流该协议类似于HTTP。源客户端将连接到服务器,并向安装点发出请求,并传递一些带有有关流信息的标头:
SOURCE /mp3test ICE/1.0content-type: audio/mpegAuthorization: Basic c291cmNlOmhhY2ttZQ==ice-name: This is my server nameice-url: http://www.google.comice-genre: Rockice-bitrate: 128ice-private: 0ice-public: 1ice-description: This is my server descriptionice-audio-info: ice-samplerate=44100;ice-bitrate=128;ice-channels=2
如果一切正常,服务器将响应:
HTTP/1.0 200 OK
然后,源客户端继续发送二进制流数据。请注意,似乎有些编码器甚至
200 OK在开始发送流数据之前甚至没有等待服务器响应。只是标题,空行,然后流数据。元数据
使用带外HTTP请求发送元数据。源客户端发送:
GET /admin/metadata?pass=hackme&mode=updinfo&mount=/mp3test&song=Even%20more%20meta%21%21 HTTP/1.0Authorization: Basic c291cmNlOmhhY2ttZQ==User-Agent: (Mozilla Compatible)
服务器响应:
HTTP/1.0 200 OKContent-Type: text/xmlContent-Length: 113<?xml version="1.0"?><iceresponse><message>metadata update successful</message><return>1</return></iceresponse>
还要注意,音频流和元数据请求都在同一端口上发送。与SHOUTcast不同,这是服务器运行所在的基本端口。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)