通过javascript和Android浏览器播放音频

时间:2013-08-31 03:06:03

标签: javascript android html audio

我正在构建一个专门通过Android设备上的Chrome浏览器访问的网站,因此它是我唯一关心我的代码运行的浏览器。

我希望能够在点击一个物体时播放声音。但到目前为止,响应速度很慢,只有每隔4或5秒钟点击一次,声音就会跟不上。我希望能够快速点击并保持声音。

通过javascript播放音频(wav文件)以使其在Android平板电脑上通过Chrome运行良好的最佳方法是什么?

我目前正在使用<audio>标签,然后使用javascript来播放该文件。 (通过我的计算机上的Chrome浏览器,它工作正常,声音的速度还可以。但是在Android平板电脑上,声音很痛苦。这就好像声音没有因为某些原因而被预加载,或类似的东西,在平板电脑上。)

我当前的代码

位于我的<body>标记下方:

<audio id="audiotag1" src="ding.wav" preload="auto"></audio>

当用户点按屏幕时

function registerTouch(mouse) {
   play_multi_sound('audiotag1');
}



var channel_max = 3;                                        // number of channels
    audiochannels = new Array();
    for (a=0;a<channel_max;a++) {                                   // prepare the channels
        audiochannels[a] = new Array();
        audiochannels[a]['channel'] = new Audio();                      // create a new audio object
        audiochannels[a]['finished'] = -1;                          // expected end time for this channel
    }

function play_multi_sound(s) {
    for (a=0;a<audiochannels.length;a++) {
        thistime = new Date();
        if (audiochannels[a]['finished'] < thistime.getTime()) {            // is this channel finished?
            audiochannels[a]['finished'] = thistime.getTime() + document.getElementById(s).duration*1000;
            audiochannels[a]['channel'].src = document.getElementById(s).src;
            audiochannels[a]['channel'].load();
            audiochannels[a]['channel'].play();
            break;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

大多数移动浏览器都不会预加载音频/视频以节省带宽。

  

Safari 5.0及更高版本支持preload属性。 Safari上   iOS永远不会预加载。

https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/AudioandVideoTagBasics/AudioandVideoTagBasics.html#//apple_ref/doc/uid/TP40009523-CH2-SW9

相关问题