2013-06-15 10 views
8

C'è un modo per riprodurre musica da byte invece di un file in HTML 5?Riproduci musica da bytearray in html5

Ho bisogno di ascoltare in streaming i brani musicali e riprodurli dal vivo.

+0

HTML5 audio può riprodurre stream, funziona bene con un server icecast – r043v

risposta

4

prega di consultare questo

var dogBarkingBuffer = null; 
// Fix up prefixing 
window.AudioContext = window.AudioContext || window.webkitAudioContext; 
var context = new AudioContext(); 

function loadDogSound(url) { 
    var request = new XMLHttpRequest(); 
    request.open('GET', url, true); 
    request.responseType = 'arraybuffer'; 

    // Decode asynchronously 
    request.onload = function() { 
    context.decodeAudioData(request.response, function(buffer) { 
     dogBarkingBuffer = buffer; 
    }, onError); 
    } 
    request.send(); 
} 

I dati file audio è binario (non il testo), quindi abbiamo impostare il responseType della richiesta di 'ArrayBuffer'. Per ulteriori informazioni su ArrayBuffers, consulta questo articolo su XHR2.

Una volta ricevuti i dati del file audio (non codificato), è possibile mantenerli in attesa di una decodifica successiva oppure decodificarli immediatamente utilizzando il metodo decodeAudioData() di AudioContext. Questo metodo prende ArrayBuffer dei dati del file audio memorizzati in request.response e decodifica in modo asincrono (non bloccando il thread di esecuzione JavaScript principale).

Al termine di decodeAudioData(), viene richiamata una funzione di richiamata che fornisce i dati audio PCM decodificati come AudioBuffer.

e qui il riferimento ==>HML5 audio

UPDATE: per farlo lavorare su Firefox e l'utilizzo di cromo:

context= typeof AudioContext !== 'undefined' ? new AudioContext() : new webkitAudioContext(); 

invece di:

var context = new AudioContext(); 
+0

lo fa solo per Google Chrome!? – Ata

+0

@Ata aggiornato per funzionare Firefox – Muath