2011-05-19 20 views
7

Estoy desarrollando el cliente para el servidor icecast (www.icecast.org). ¿Alguien me puede decir cuál es el formato que están utilizando para transmitir el contenido?Desarrollo del cliente para el servidor icecast

Estaba buscando en sus páginas, pero no hay información sobre el formato de la secuencia en absoluto.

He verificado la traza de Wireshark y, debido a que entiendo el formato de los datos de audio que estoy recibiendo dentro de la respuesta 200 OK a la solicitud GET, es simplemente un archivo de audio binario sin ningún metadato incluido, por lo que comparo el SHOUTcast o HTTP Live Streaming (HLS) es un enfoque relativamente simple.

¿Es correcto? Alguna experiencia con eso?

Wireshark traza fragmento:

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 

Gracias y saludos,

Sten

Respuesta

13

para sus propósitos, Icecast y Shoutcast son equivalentes.

Ambos usan una versión bastardeada de HTTP. De hecho, puede hacer una solicitud HTTP simple y usar bibliotecas de cliente HTTP estándar, y casi siempre funcionará bien. Lo único diferente es que SHOUTcast devolverá ICY 200 OK en lugar de HTTP 200 OK en su respuesta.

Ahora, si realiza la solicitud, como ha hecho anteriormente, obtendrá una transmisión de audio estándar que puede reproducir directamente. Como ha señalado, MP3 y AAC se usan casi exclusivamente, pero se pueden usar otros formatos.

Si desea metadatos, tiene que decirle al servidor que está preparado para recibirlos. Usted tiene que poner esta cabecera en su solicitud:

Icy-MetaData:1 

Una vez hecho esto, verá otra cabecera de volver a usted en la respuesta, como icy-metaint:8192, lo que significa que cada 8192 bytes, que recibirán una fragmento de metadatos.

No entraré en más detalles porque esto ya está bien documentado. No hay necesidad de volver a escribir la rueda:

Pulling Track Info From an Audio Stream Using PHP

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

Sin embargo, si usted tiene preguntas sobre la marcha, por favor publicarlos en StackOverflow y etiquetarlas como icecast o Shoutcast, y lo haré estar feliz de ayudarte

+0

¡Hola, lo probé con curl con el encabezado que sugirió y tiene razón! ahí están los metadatos. La única diferencia es que he recibido ** HTTP 200 OK **, no ** ICY 200 OK ** 'GET /bonton-128.mp3 HTTP/1.1 User-Agent: curl/7.19.5 Host: icecast3. jugar.cz aceptar: */* helado en metadatos: 1 HTTP/1.0 200 OK Content-Type: audio/mpeg helada-BR: 128 hielo-audio-Info: hielo de muestreo = 44100; hielo tasa de bits = 128; hielo canales = 2 helada-BR: 128 helada-Descripción: Radio Bonton helada-género: Pop/rock helada-name: Radio Bonton helada-pub: 0 ​​ helada-url: http://www.radiobonton.cz Servidor: Icecast 2.3.2 Cache-Control: no-cache icy-metaint: 16000' – STeN

+0

Sí, eso depende del servidor. Icecast devuelve HTTP y SHOUTcast devuelve ICY. De cualquier manera, no importa, todo lo demás es idéntico. ¡Feliz de ver que lo tienes funcionando! – Brad

0

Acabo de terminar un proyecto para la estación de radio, donde usaron icecast. Quiero share you the radio player y algunas envolturas de PHP que he usado para obtener información de centova, icecast y lastfm.

+0

Hola ¿Hay solo dos tipos de servidores de transmisión? –

+0

@AnkitSrivastava Hay muchos tipos de servidores de transmisión. Muchos protocolos, muchos contenedores, muchos códecs y muchas combinaciones de todos los anteriores. – Brad

Cuestiones relacionadas