如何捕获麦克风缓冲区

Posted

技术标签:

【中文标题】如何捕获麦克风缓冲区【英文标题】:How To Capture the Microphone Buffer 【发布时间】:2013-04-13 01:11:33 【问题描述】:

我正在使用 VOIP 聊天应用程序作为参考代码。我正在尝试在 C# 中获取捕获的音频数据,以便我可以发送到网络。在后端项目 Server.h 中有一个方法可以提供可在 UI 中使用的 callController 对象。我尝试添加将给我音频控制器对象的方法,但应用程序崩溃说访问冲突执行位置 0x6BE27618。

或者有没有其他方法可以用来在c#代码中获取麦克风数据。

【问题讨论】:

【参考方案1】:

这实际上取决于您尝试在其中使用它的上下文。对于标准应用程序,有一种抽象的方法可以做到这一点,通过Coding4Fun Toolkit。使用MicrophoneRecorder 类。归结为:

MicrophoneRecorder recorder = new MicrophoneRecorder();
recorder.Start();
// Do something - e.g. wait
recorder.Stop();
byte[] capture = recorder.Buffer;

【讨论】:

我知道,但我想从聊天框参考代码中获取麦克风数据。现在它只是在本机代码中,我想在托管代码中获取该数据。 我能够在 UI 中获取 BackEndAudio 对象。在 BackEndAudio 类中,当捕获的数据准备好时,我正在触发事件。为了捕捉该事件,我在 c# 代码中添加了事件侦听器但我得到了以下异常。任何人都可以帮助解决 HeadlessHost.exe 中 0x6D8E2F15 (Msvcr110d.dll) 处的未处理异常:0xC0000005:访问冲突写入位置 0x00000000。 在我看来就像一个 nullref 异常。使用您正在使用的代码更新您的主帖子

以上是关于如何捕获麦克风缓冲区的主要内容,如果未能解决你的问题,请参考以下文章

使用 offlineAudioContext 重新采样捕获的音频流

几秒钟前如何创建音频缓冲区以访问麦克风输入

使用 C 在 Windows 上捕获和分析音频

QT6 C++ 中音频捕获原始数据的选项[关闭]

在 OSX 中以编程方式更改麦克风增益

为啥麦克风关闭时基频和幅度不为零?