2013-07-20 20 views
7

Am codiert klingen kann Ton mit Javascript durch die folgenden spielen,Spiel .wav-Datei in Base64 mit Javascript

var snd = new Audio('sound.wav'); 
    snd.play(); 

Dies spielt den erforderlichen Ton, aber manchmal lädt sie langsam oder vielleicht nicht einmal Last bei allen so Ich habe den Sound in Base 64 codiert und versucht, ihn so zu spielen.

 var splash = { 
prefix: "data:audio/wav;base64,", 
sound: [ "*base64 string here*" ] }; 

    var snd = new Audio(splash); 
    snd.play(); 

aber der Sound spielt nicht, gibt es einen Weg um es herum?

+0

Sie, was jetzt getan:

Base64 Umwandlung kann leicht von getan werden? Warum würden Sie das Audio als base64 kodieren? – adeneo

+0

so dass es schneller spielen würde, sah ich es in einem Plugin getan, Google Furz scroll – Udo

+0

Wenn Sie so sagen! – adeneo

Antwort

24

, die nicht wie die richtige Art und Weise sieht die Audio Konstruktor für HTMLAudioElement/<audio> zu verwenden.

leichte Anpassung

var snd = new Audio("data:audio/wav;base64," + base64string); 
snd.play(); 

Wenn es in der Konsole, aber nicht in Skript funktioniert, kann es Müll gesammelt bekommen, in welchem ​​Fall Umfang es so wird es bleiben

var Sound = (function() { 
    var df = document.createDocumentFragment(); 
    return function Sound(src) { 
     var snd = new Audio(src); 
     df.appendChild(snd); // keep in fragment until finished playing 
     snd.addEventListener('ended', function() {df.removeChild(snd);}); 
     snd.play(); 
     return snd; 
    } 
}()); 
// then do it 
var snd = Sound("data:audio/wav;base64," + base64string); 
+0

danke eine Million @paul s., Aber was denkst du ist lädt schneller, base64 oder Sound-Datei? – Udo

+2

@UDcreate hängt davon ab, was du meinst "lädt schneller". Das _ ** base64 ** _ bedeutet, dass die Seite länger zum Laden braucht, abhängig von der _ping_- und Sounddateigröße Ihres Servers ** kann für ** initial load ** sogar länger als page + file ** sein, da base64 mehr Speicherplatz benötigt , aber sobald die Seite geladen ist, ist der Ton sofort verfügbar. Alternativ, wenn Sie eine _ ** Datei ** _ verwenden, lädt die ** Seite viel schneller **, aber es ** kann eine Verzögerung ** sein, wenn der Sound vom Server abgerufen wird, wenn Sie ihn abspielen möchten. –

+0

@UDcreate Es kommt darauf an. Wenn gezippt wird, ist base64 ziemlich schnell. Roh-Sound-Datei hat ein binäres Format, daher ist es am Anfang mehr gequetscht. Wie auch immer, das WAV-Format ist sehr groß. Nichts wird dir die Wahrheit sagen, sondern Leistungstests. – Frizi