获取 windows phone 中麦克风的振幅

Posted

技术标签:

【中文标题】获取 windows phone 中麦克风的振幅【英文标题】:getting the amplitude of the microphone in windows phone 【发布时间】:2014-04-08 21:18:18 【问题描述】:

我想获取 windows phone 中麦克风输入的实时幅度。实现这一目标的最简单有效的方法是什么?

【问题讨论】:

看这篇文章:***.com/questions/9361022/… 【参考方案1】:

要获得振幅,您必须处理 Microphone 类的 BufferReady 事件:

http://msdn.microsoft.com/en-us/library/windowsphone/develop/gg442302(v=vs.105).aspx

设置代码

Microphone microphone = Microphone.Default;
microphone.BufferReady += new EventHandler<EventArgs>(microphone_BufferReady);
microphone.BufferDuration = TimeSpan.FromMilliseconds(1000);

byte[] buffer;
buffer = new byte[microphone.GetSampleSizeInBytes(microphone.BufferDuration)];

microphone.Start();

事件处理块

void microphone_BufferReady(object sender, EventArgs e)


    microphone.GetData(buffer);


    for(int i = 0; i< buffer.Length; i+=2)
    
        //The value of sample is the amplitude of the signal
        short sample = BitConverter.ToInt16(new byte[2]  buffer[i], buffer[i + 1] , 0);
    

【讨论】:

感谢您的回复。它在“microphone.BufferReady += new EventHandler(microphone_BufferReady);”处引发“System.NullReferenceException”。你能解决这个问题吗? 我可以修复它。只需在 WMAppManifest.xml 中启用 ID_CAP_MICROPHONE。

以上是关于获取 windows phone 中麦克风的振幅的主要内容,如果未能解决你的问题,请参考以下文章

无法在 windows phone 8 中播放使用麦克风录制的 MP3 文件

如何使用 Windows Phone 的麦克风在网页中录制音频?

Windows Phone 8 从麦克风 C# 录制声音

win10电脑开麦没声音怎么办

可运行的Android if语句并不总是触发

Windows:获取默认麦克风名称