84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
最近需要做一个WEB应用。里面有一个场景是转盘抽奖,想做点声音上去,在转盘转动的时候播放,音频文件很简单,就是“哒”的一声,大小也只有6K,已知HTML5有标签,并且可以通过设置属性loop来实现循环播放
<audio src="sfx_lottery_spinclick.mp3" autoplay loop></audio>
但是速度明显不够,一秒钟大概能播放5次,怎么样才能让他播放的频次更高呢?配合JS以编程的方式来实现会不会有办法呢,请高手赐教。。。
学习是最好的投资!
javascript - 利用HTML5/JS有没有办法实现快速循环播放-PHP中文网问答-javascript - 利用HTML5/JS有没有办法实现快速循环播放-PHP中文网问答
围观一下哦,学习一下。
<audio>的接口里有声音播放速度的接口,但是多浏览器支持没有做过测试,楼主小心使用。
<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毫秒。当然可以通过调节毫秒数来达到更好的效果。
我推测你的问题在于比如音频可能有100ms,但你想1000ms内播放100次。所以单纯的遍历是不能解决问题的,而且在极快的情况下,js所需要的时间也会被考虑进去延缓频率。
可以试试多开几个音频,然后延时播放。比如说在10ms时播放第二个音频,20ms播放第三个...90ms播放最后一个,这样在100ms时第一个音频会再次循环,如此就可以达到10ms播放一次的频率。
javascript - 利用HTML5/JS有没有办法实现快速循环播放-PHP中文网问答-javascript - 利用HTML5/JS有没有办法实现快速循环播放-PHP中文网问答
围观一下哦,学习一下。
<audio>
的接口里有声音播放速度的接口,但是多浏览器支持没有做过测试,楼主小心使用。当然,如果是声音里面有衰减或空白的部分,不想剪辑声音的话,可以用多个Audio同时循环播放,如下:
最后共五个音频先后循环播放,各延迟1000毫秒。当然可以通过调节毫秒数来达到更好的效果。
我推测你的问题在于比如音频可能有100ms,但你想1000ms内播放100次。所以单纯的遍历是不能解决问题的,而且在极快的情况下,js所需要的时间也会被考虑进去延缓频率。
可以试试多开几个音频,然后延时播放。比如说在10ms时播放第二个音频,20ms播放第三个...90ms播放最后一个,这样在100ms时第一个音频会再次循环,如此就可以达到10ms播放一次的频率。