2010-05-09 18 views
22

Espero que alguien pueda ayudarme con esto.Buscando a través de un archivo de transmisión MP3 con HTML5 <audio> etiqueta

Estoy jugando con un servidor node.js que transmite audio a un cliente, y quiero crear un reproductor HTML5. En este momento, estoy transmitiendo el código del nodo usando codificación fragmentada, y si vas directamente a la URL, funciona muy bien.

Lo que me gustaría hacer es insertar este usando la etiqueta HTML 5 <audio>, así:

<audio src="http://server/stream?file=123"> 

donde /stream es el punto final para el servidor de nodo para transmitir los MP3. El reproductor HTML5 se carga bien en Safari y Chrome, pero no me permite buscarlo, y Safari incluso dice que es una "transmisión en vivo". En los encabezados de /stream, incluyo el tamaño del archivo y el tipo de archivo, y la respuesta finaliza correctamente.

¿Alguna idea sobre cómo podría evitar esto? Ciertamente podría enviar todo el archivo de una vez, pero luego el jugador esperaría hasta que todo se haya descargado. Prefiero transmitirlo.

+0

También quiero hacer esto, pero todo lo que he encontrado es que esto sólo es compatible con los formatos OGG y M4A. Entonces no estoy seguro de que sea posible. Pero todavía estoy buscando. –

Respuesta

2

mira aquí http://www.scottandrew.com/pub/html5audioplayer/, lo usé y se reproduce mientras se está descargando el archivo. Espera un poco para el buffer pero luego se reproduce. Nunca intenté buscar, pero comenzaría tratando de establecer el "aud.currentTime" en su código si eso se puede hacer.

Buena suerte

1

¿Está enviando un Accept-Ranges (cabecera RFC 2616, Section 14.5) respuesta?

+1

Quizás no estaba muy claro en mi pregunta original: solo quiero buscar dentro de la parte del video protegida, por lo que las solicitudes de rango de bytes no deberían ser necesarias en este momento. –

-1

Por lo que entiendo que desea el jugador para permitir al usuario saltar a las partes del audio/vídeo que paraíso' t buffer todavía, algo así como lo que hacen los jugadores de Vimeo/YouTube. Tbh No estoy seguro si esto es posible, ya que he visto algunos de los ejemplos de elementos medianos html5 y simplemente no me permitieron buscar partes sin búfer :(

Si desea buscar a través de la parte del búfer, entonces no es un problema. De hecho, usted es creando un problema para ti aquí, por lo que yo entiendo. Desea transmitir el archivo, y lo que hace es que el jugador crea que tiene algún tipo de transmisión en vivo. Si acaba de enviar el archivo directamente, no tendrá este problema, porque el reproductor podrá comenzar a reproducir antes de cargar todo el archivo. Esto funciona bien con elementos de audio y video, y he confirmado este comportamiento tanto en Chrome como en FF :)

Espero que esto ayude!

+0

No puedo alimentar un archivo directamente a un jugador cliente debido a políticas locales. Cuando reinicio la reproducción o busco el inicio, no se realiza ninguna nueva solicitud, se reproduce desde lo que está almacenado en el búfer. No puedo buscar en otro lado. – Qwerty

-1

quizás este html5 audio player example nos explique y nos demuestre el nuevo elemento y sus métodos .load, .play, .currentTime, etc.

uso una matriz de elementos y puedo configurar la posición de tiempo actual, por supuesto. podemos usar también eventhandlers (por ejemplo, 'loadeddata') para esperar antes de permitir la búsqueda.

ping y divertirse con html5 :)

5

Asegúrese de que el servidor acepta peticiones de rango, se puede comprobar para ver si es Accept-Ranges en la cabecera. En jPlayer, este es un problema común en los navegadores Webkit (particularmente Chrome) cuando se trata de progreso y búsqueda de funcionalidad.

Es posible que no esté utilizando jPlayer, pero la información de respuesta del servidor en el sitio web oficial puede ser de alguna utilidad.

http://www.jplayer.org/latest/developer-guide/#jPlayer-server-response

+0

Gracias por señalar jplayer - no puedo creer que no haya oído hablar de él antes de – acatalept

+0

¡Excelente! Trabajado como un encanto. Seek no funcionaba en Chrome, pero estaba trabajando en Firefox y Safari. Se agregó Accept-Ranges en el encabezado y la búsqueda comenzó a funcionar. –

-2

pero tenía el mismo problema. Es necesario configurar algunos encabezados para la respuesta del archivo multimedia.

como ejemplo:

Accept-Ranges:bytes 
Content-Length:7437847 
Content-Range:bytes 0-7437846/7437847 

etiqueta de audio Entonces será capaz de buscar

Cuestiones relacionadas