2013-03-03 11 views
17

Mi piacerebbe leggere un flusso MP3 (da icecast, leggere i metadati ICY e quindi passare i dati binari MP3 a un API Web Audio).WebKit equivalente a Firefox "moz-chunked-arraybuffer" xhr responseType

Firefox ha un "moz-chunked-arraybuffer" xhr responseType per leggere i dati sullo stato di avanzamento, ma non riesco a trovare alcun equivalente per webkit/chrome.


EDIT 2014/02/03:

Chrome ha iniziato ad attuare xhr.responseType "stream"

Il "parsing" è atterrato in Chrome (con il --enable-sperimentale-webkit -Caratteristiche bandiera), ma il risultato xhr.response oggetto (stream) non è ancora utilizzabile direttamente in Javascript: https://code.google.com/p/chromium/issues/detail?id=240603


EDIT 2014/07/10:

La specifica è ora sviluppato: https://github.com/whatwg/streams

sviluppatori Chromium ha intenzione di "fare un po 'il prototipo senza attendere il completamento della standardizzazione"


EDIT 2015/01/22:

Il Streams API non sarà implementato in XHR (era solo per la prototipazione). It will finally be implemented nell'implementazione Fetch API, che è stata recentemente spedita in Chrome (dietro la bandiera sperimentale).


EDIT 2015/01/30: Fetch API ha un Intent to Ship! Le API degli stream sono annunciate come "imminenti integrazioni", è proprio qui!


EDIT 2015/04/15:

\ o/Gloria! L'API di recupero è ora atterrato in Chrome 42 (versione stabile corrente: http://googlechromereleases.blogspot.fr/2015/04/stable-channel-update_14.html). 42 non è solo la risposta alla vita, l'universo e tutto, ma anche a questa domanda: "Come posso consumare una 'richiesta AJAX' come un flusso":

https://github.com/GoogleChrome/samples/blob/gh-pages/fetch-api/fetch-response-stream.html

Fine della storia :)

+0

Grazie per gli aggiornamenti! Sono molto apprezzati. – Yetti

risposta

0

Penso che la soluzione al problema non abbia visto l'intero oggetto AudioContext per html5.

http://www.html5rocks.com/en/tutorials/webaudio/intro/

È possibile decodificare i dati audio: decodeAudioData() È possibile riprodurre la musica tramite un AudioBuffer in grado di riprodurre musica in streaming tramite una presa di rete o semplicemente chunked http streaming.

Quando si desidera riprodurre un brano basta chiamare il PlaySound()

Quindi la vera risposta è utilizzare l'AudioContext e sarete d'oro

+0

È _COULD_ be. Ero quasi arrivato ... 1) Devi rimuovere i byte extra da Icecast (ghiaccio-metadati) 2) decodeAudioData() aggiunge alcuni millisecondi extra di audio "vuoto" in ciascun buffer che si traduce in una cattiva qualità per il Audio –