利用HTML5/JS有没有办法实现快速循环播放


最近需要做一个WEB应用。里面有一个场景是转盘抽奖,想做点声音上去,在转盘转动的时候播放,音频文件很简单,就是“哒”的一声,大小也只有6K,已知HTML5有 <audio> 标签,并且可以通过设置属性loop来实现循环播放 </audio>


 <audio src="sfx_lottery_spinclick.mp3" autoplay loop></audio>

但是速度明显不够,一秒钟大概能播放5次,怎么样才能让他播放的频次更高呢?配合JS以编程的方式来实现会不会有办法呢,请高手赐教。。。

音频 html5 JavaScript

百地三套夫 10 years, 8 months ago

<audio> 的接口里有声音播放速度的接口,但是多浏览器支持没有做过测试,楼主小心使用。


 myVid=document.getElementsByTag("audio");
myVid.playbackRate=4;//大于1,就是高速播放

当然,如果是声音里面有衰减或空白的部分,不想剪辑声音的话,可以用多个Audio同时循环播放,如下:


 var audios=[];
for (var i= 0; i < 5; i++ ) {
    var a = new Audio();
    a.src = "" ;//填入你的音频地址
    a.preload="auto";
    a.loop = true;
    audios.push(a) ;
}

// 调用下面函数之前需要先确定audio已经完全载入,可以通过audio的readystate接口进行判断。
//这里直接就写成立即执行的方式了。
(function playSingle(i){
    //用递归写的,迭代也可行
    if ( i > 0 ) {
        audios[i-1].play() ;
        setTimeout(function(){
            playSingle(i-1) ;
        },1000);//每隔1000毫秒,额外播放一个音频
    }
})(audios.length) ;

最后共五个音频先后循环播放,各延迟1000毫秒。当然可以通过调节毫秒数来达到更好的效果。

維以不咏傷 answered 10 years, 8 months ago

Your Answer