用javascript编写用base64编码的.wav声音文件

时间:2013-07-20 13:30:02

标签: javascript html5 base64

能够通过以下方式使用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();

但声音没有播放,是否有办法绕过它?

2 个答案:

答案 0 :(得分:40)

这似乎不是使用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);

答案 1 :(得分:6)

var snd = new Audio("data:audio/x-wav;base64, <URI data>");
snd.play();

无需将 splash 声明为对象变量。

Base64转换可以通过以下方式轻松完成: https://dopiaza.org/tools/datauri/index.php