2013-06-15 11 views
8

Gibt es eine Möglichkeit, Musik aus Bytes statt einer Datei in HTML 5 zu spielen?Musik von Bytearray in HTML5 wiedergeben

Ich muss Musik Bytes streamen und sie live spielen.

+0

html5-Audio kann Play Stream, es funktioniert gut mit einem Icecast-Server – r043v

Antwort

4

überprüfen Sie bitte diese

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(); 
} 

Die Audiodatei Daten binär ist (nicht Text), so setzen wir die response des Antrags auf ‚Arraybuffer‘. Weitere Informationen zu ArrayBuffers finden Sie in diesem Artikel zu XHR2.

Sobald die (nicht decodierten) Audiodateidaten empfangen wurden, können sie für die spätere Decodierung beibehalten oder direkt mit der Methode AudioContext decodeAudioData() decodiert werden. Diese Methode verwendet den ArrayBuffer der Audiodateidaten, die in request.response gespeichert sind, und dekodiert sie asynchron (wobei der Haupt-JavaScript-Ausführungsthread nicht blockiert wird).

Wenn decodeAudioData() beendet ist, ruft es eine Callback-Funktion auf, die die dekodierten PCM-Audiodaten als AudioBuffer bereitstellt.

und hier die Referenz ==>HML5 audio

UPDATE: , um es auf Firefox und Chrome arbeiten zu lassen:

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

statt:

var context = new AudioContext(); 
+0

tut es nur für Google Chrome!? – Ata

+0

@Ata aktualisiert, um Firefox zu arbeiten – Muath