【发布时间】:2011-08-05 17:47:07
【问题描述】:
我正在关注this tutorial,了解如何制作 Silverlight 录音机。我认为添加音量条指示器以向用户提供有关正在发生的事情的反馈会很棒。但是,我似乎无法让它正常工作。
OnSamples AudioSink 类的方法提供原始 PCM 数据作为参数之一。另外,我将AudioCaptureDevice 的AudioFrameSize 属性设置为40(1000/40 == 25fps),因此每40ms 触发一次OnSamples。
我的问题是如何从 PCM 数据中提取音量信息并将其显示为进度条 [0-100] 的百分比?
这是我目前所拥有的:
double average = 0;
for (int a = 0; a < sampleData.Length; ++a)
{
average += Math.Abs(sampleData[a]);
}
average /= sampleData.Length;
double volume = 20 * Math.Log10(average);
然后将进度条的值设置为音量:
progressBar.Value = volume;
显然,我的代码不起作用,因为音量值几乎总是处于同一水平。
感谢任何帮助!
【问题讨论】:
标签: silverlight audio microphone pcm