我确实知道如何设置或获得常识中的音量。就像你设置的总体积一样。因此,如果声音很大并且你降低了音量,整个剪辑的音量就会缩小,那么响亮的声音就会变得更安静,而且声音已经非常低了。
我正在尝试制作动画,其中,画布,圆圈的大小会根据视频,音频或麦克风的音量而变化,而不是基于总音量。我没有制作体积计。
所以基本上是视频元素的声音可视化器。
但是,我找不到视频元素的属性。这就像我找不到合适的词,当前的响度?!
有用的链接:
http://jcla1.com/blog/2012/03/11/web-audio-api-overview-part1/
https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AnalyserNode-section
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays
http://www.html5rocks.com/en/tutorials/webaudio/intro/
http://chimera.labs.oreilly.com/books/1234000001552/index.html
http://webaudioapi.com/samples/
经过多次尝试和帮助形成链接我已经做到了这一点......但是大部分时间响度似乎都是完全不确定是否属实。
http://jsfiddle.net/techsin/d4Xqm/19/
http://jsfiddle.net/techsin/d4Xqm/18/
var v= document.getElementById('v'),
ctx= new webkitAudioContext(),
src= ctx.createMediaElementSource(v),
alyz= ctx.createAnalyser(),
arr= null, l=0, i=0,
t=true, p=$('.l');
v.addEventListener('play',update);
v.addEventListener('ended',function(){t=false;});
src.connect(alyz);
alyz.connect(ctx.destination);
arr= new Uint8Array(alyz.frequencyBinCount);
function update(){
if(t) requestAnimationFrame(update);
alyz.getByteFrequencyData(arr);
l=0;
for(i=0; i<arr.length;i++) { l= (l<arr[i])?arr[i]:l; }
p.text(l);
}
答案 0 :(得分:11)
据我所知,你想制作一个vu米,但用圆圈而不是条形。您首先需要做的是从分析仪获得所有频率的平均音量。然后只需使用该值作为绘制圆的半径。
我用代码制作了a jsfiddle for you并解释了评论。 要获得平均值:
var array = new Uint8Array(analyser.fftSize);
analyser.getByteTimeDomainData(array);
var average = 0;
var max = 0;
for (var a of array) {
a = Math.abs(a - 128);
average += a;
max = Math.max(max, a);
}
average /= array.length;
希望这有帮助!