32

我可以通过以下方式使用 javascript 播放声音,

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

这会播放所需的声音,但有时加载速度很慢,甚至可能根本不加载,所以我在 base 64 中对声音进行编码并尝试以这种方式播放。

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

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

但是声音不播放,有没有办法解决它?

4

2 回答 2

64

这看起来不像为HTMLAudioElement /使用Audio构造函数的正确方法。<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);
于 2013-07-20T13:33:20.637 回答
11
var snd = new Audio("data:audio/x-wav;base64, <URI data>");
snd.play();

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

Base64 转换可以从以下位置轻松完成: https ://dopiaza.org/tools/datauri/index.php

于 2016-12-28T04:05:06.610 回答