问题:在 HTML5 中自动找到屏蔽和取消静音音频(没有VideoPlayer)的有效功能,直到超过定义的时间。
我将振荡器的增益设置为从0逐渐增加到1(在每个增益单位的增加中被一束1秒的静音中断)直到达到30秒。为此,调用了 setValueAtTime 函数(我增加了增益和时间的增量)。
然而,它似乎并不高效,因为迭代不会遵循准确的实际相应时间,即使参数被单独设置为在特定时间内改变值 - >这需要一个虚拟的努力来测试。更有趣的是 setValueCurveAtTime 和 setLinearRampAtTime ,但它们似乎不允许分发"沉默"在增加的语气中。发现的唯一引用将UserInteraction视为自定义按钮,这不是自动的;和JQuery函数。我发现没有足够精确的文档。函数" document.getElementById(id).setVolume(0);"例如,既没有提供定义沉默持续时间的选项,也没有提供在增加音调的30秒内均匀地插入这1个静音的选项。
定义函数后,我会调用 setTimeout 以便立即播放,然后 setInterval (" function()",30000) 。
代码片段
context=new AudioContext();
var oscillator = context.createOscillator();
var gainR = context.createGain();
oscillator.connect(gainR);
gainR.connect(context.destination);
gainR.gain.setValueAtTime(0,currenttime);
loudnessup = function (){
var c = currenttime;
var Loud=0.2;
gainR.gain.setValueAtTime(Loud, c+2);
gainR.gain.setValueAtTime(0, c+3);
gainR.gain.setValueAtTime(Loud+0.05, c+3.5);
gainR.gain.setValueAtTime(0, c+4.5);
//...continues iterations
gainR.gain.setValueAtTime(Loud+0.8, c+28);
gainR.gain.setValueAtTime(0, c+30);};
setTimeout("loudnessup()",currenttime);
setInterval(function(){
n=n+1; //after 30s the freq value should arise accordingly to an array
oscillator.frequency.value = frequencies[n];},30000);}
在30年代之后,具有更高频率的循环似乎没有进一步