web-dev-qa-db-ja.com

JavaScriptを使用してbase64でエンコードされた.wavサウンドファイルを再生する

以下を介してjavascriptでサウンドを再生できます、

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

これは必要なサウンドを再生しますが、ロードが遅いかまったくロードされない場合があるため、ベース64でサウンドをエンコードして、この方法で再生しようとしました。

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

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

音が出ないのですが、回避策はありますか?

21
Udo

Audioコンストラクタを HTMLAudioElement / に使用する正しい方法のようには見えません<audio>

微調整

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

コンソールでは機能するがスクリプトでは機能しない場合、ガベージコレクションが行われている可能性があります。

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);
47
Paul S.
var snd = new Audio("data:audio/x-wav;base64, <URI data>");
snd.play();

splashをオブジェクト変数として宣言する必要はありません。

Base64変換は以下から簡単に実行できます https://dopiaza.org/tools/datauri/index.php

7
Fong Kah Chun