我正在尝试制作动画,其中,画布,圆圈的大小会根据视频,音频或麦克风的音量而变化,而不是基于总音量.我没有制作体积计.
所以基本上是视频元素的声音可视化器.
但是,我找不到视频元素的属性.这就像我找不到合适的词,当前的响度?!
有用的链接:
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); }
解决方法
我用代码制作了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;
希望这可以帮助!
原文地址:https://www.jb51.cc/html5/240991.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。