2011-05-24 106 views
9

Estoy usando un elemento de audio para transmitir una fuente de ogg desde un servidor de Icecast. ¿El elemento de audio extrae metadatos helados y hay alguna forma de acceder a ellos a través de javascript?¿Es posible obtener metadatos de Icecast del elemento de audio HTML5?

Básicamente, quiero mostrar "que se está reproduciendo" información de una emisora ​​de radio que estoy streaming. ¿Cuáles son mis opciones?

Gracias!

Respuesta

5

No, sus elementos HTML5 sólo están al tanto de los datos del flujo, y ni siquiera se hace la solicitud apropiada a buscar los metadatos.

ver a estos mensajes:

Ahora, esto no es imposible, por cualquier medio. Solo tienes que hacerlo desde el servidor. (Vea ese segundo enlace en particular.)

También debo señalar que en un servidor SHOUTcast en toda regla (no ha sido probado con Icecast, pero vale la pena intentarlo) genera "7.html" que contiene datos sobre la cantidad de oyentes, oyentes máximos, oyentes máximos, estéreo/mono, tasa de bits y nombre de pista actual como valores separados por comas. De esta manera:

2,1,33,625,2,128,J Mascis - Not Enough

Si se puede recuperar http://yourstreamingserver:port/7.html, entonces se puede obtener estos datos con mucha facilidad.

+0

Un problema es mostrar el nombre de la canción en tiempo real sincronizado con el flujo de audio, esto no es posible la lectura desde un servidor shoutcast (7.html), el tiempo real sólo es posible leer la información de metadatos incrustados en el flujo de audio. Yo sería feliz de leer los metadatos con javascript/html5 –

+1

@JoseNobile, por desgracia, no tiene una opción ... al menos no si quieres compatibilidad. Puede usar uno de los códecs implementados en el navegador y cortar algunos encabezados en su flujo para admitir CORS, y luego ocuparse de la sobrecarga de un códec JS puro. Eso no es factible para la mayoría. También tenga en cuenta que, por la naturaleza de los metadatos al estilo SHOUTcast, de todos modos no está perfectamente sincronizado. También podría hacer algo en el lado del servidor con AJAX de sondeo largo (como Socket.IO). – Brad

+0

usando AJAX para obtener la transmisión no es posible debido a las restricciones de protocolo, dominio y puerto. servidor Shoutcast no tiene manera de añadir cabeceras personalizadas como Access-Control-Allow-Origen: * (para usar CORS) que envió la solicitud de función al foro de Google Chrome http://productforums.google.com/forum/# ! category-topic/chrome/give-feature-feedback-and-suggestions/windows/AJQl3pwgriI –

1

En caso de un flujo de contenedores Ogg (Así pues, tanto Vorbis y Opus), al menos Firefox soporta Javascript acceso a los metadatos. Actualmente, solo es API de JavaScript "específica del proveedor": audio.mozGetMetadata();

Por otro lado, si elige Icecast 2.4.1, puede acceder a los metadatos de forma independiente a través de una API JSON. La falta de sincronización como se señala en otros comentarios se aplica. Sin embargo, suele ser "lo suficientemente cerca".