试图通过javascript从音频文件中获取分贝级别
Posted
技术标签:
【中文标题】试图通过javascript从音频文件中获取分贝级别【英文标题】:Trying to get decibel levels from an audio file through javascript 【发布时间】:2014-11-21 21:38:46 【问题描述】:我一直在看这里的信息:
Is there a way get something like decibel levels from an audio file and transform that information into a json array?
但是当我尝试在这里运行 JSBin 时:
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Get Audio Data</title>
<link rel="stylesheet" type="text/css" href="index.css">
<script type="text/javascript" src="music.js"></script>
</head>
<body>
<div id=meter></div>
</body>
</html>
#meter
width: 500px;
height: 15px;
margin: 2px 0;
background: green;
-webkit-transition;
width .05s;
function()
var ctx = new webkitAudioContext(),
url = 'test.mp3',
audio = new Audio(url),
processor = ctx.createJavaScriptNode(2048, 1, 1),
meter = document.getElementById('meter'),
source;
audio.addEventListener('canplaythrough', function()
source = ctx.createMediaElementSource(audio);
source.connect(processor);
source.connect(ctx.destination);
processor.connect(ctx.destination);
audio.play();
, false);
processor.onaudioprocess = function(evt)
var input = evt.inputBuffer.getChannelData(0),
len = input.length,
total = i = 0,
rms;
while(i<len)
total += Math.abs(input[i++]);
rms = Math.sqrt(total/len);
meter.style.width = (rms*100) + '%';
;
;
我不太确定它在做什么。谁能给我更多信息?
【问题讨论】:
我不是在网上四处寻找您的代码。请看How to Ask 点击一个链接并不能真正构成在互联网上追逐......但我会编辑这个问题。 您是否只是要求某人解释代码在做什么,或者您是否期望它应该做一些它没有做的事情?你的问题不是很清楚。 【参考方案1】:替换失效的 API 调用后,您的代码会生成 RMS 输出
old webkitAudioContext
new
try
window.AudioContext = window.AudioContext ||
window.webkitAudioContext ||
window.mozAudioContext ||
window.oAudioContext ||
window.msAudioContext;
ctx = new AudioContext();
console.log("cool audio context established ... ctx ");
catch (e)
alert("Web Audio API is not supported by this browser\n ... http://caniuse.com/#feat=audio-api");
和
old createJavaScriptNode
new createScriptProcessor
【讨论】:
以上是关于试图通过javascript从音频文件中获取分贝级别的主要内容,如果未能解决你的问题,请参考以下文章
基于AudioTrack、AudioRecord获取分贝值、录制时长、PCM解码与编码
使用 HTML5/javascript 校正音频音量输出分贝,关闭预处理