gpt4 book ai didi

c# - 重采样 WasapiLoopbackCapture

转载 作者:太空宇宙 更新时间:2023-11-03 23:42:54 24 4
gpt4 key购买 nike

我正在尝试从我的声卡44100Hz, 16bit, 2 channel 波形中重新采样 WasapiLoopbackCapture 的输出到 16000Hz, 16bit, 1 channel 格式,以便以后在System.Net.Sockets.NetworkStream(我想把转换后的字节写到网络流中)

但我什至不知道如何开始!我对信号处理真的很陌生,我已经尝试搜索教程,但我只是无法理解如何执行此操作。

这是我到目前为止得到的:

void StartRecording()
{
capture = new WasapiLoopbackCapture(device); // device is an audiodevice picked from the user. speaker, headphones etc
capture.ShareMode = NAudio.CoreAudioApi.AudioClientShareMode.Shared;
capture.DataAvailable += capture_DataAvailable;
capture.RecordingStopped += capture_RecordingStopped;
capture.StartRecording();
}

void capture_DataAvailable(object sender, WaveInEventArgs e)
{
outputStream.Write(e.Buffer, 0, e.BytesRecorded); // here I want to output audio to the NetworkStream.
// But I have to resample it first, which brings me to my question.
}

我基本上想知道的是如何获得一个字节数组,该字节数组已经过重新采样并准备好发送到网络流的另一端!非常感谢任何建议!提前谢谢你。

最佳答案

NAudio 包括几种不同的重采样器 - 一种使用 ACM (WaveFormatConversionStream),一种使用媒体基础 (MediaFoundationResampler),另一种完全用托管代码编写 ( WdlResamplingSampleProvider).我在 this post 中讨论了每一个.

对于您的情况,您想要进行“输入驱动”重采样,您知道有多少输入样本并且只想将它们传递到重采样器中。这可能比 NAudio 中的输出驱动重采样更棘手。我已经写了另一篇关于如何做的帖子 input driven resampling using AcmStream . Media Foundation 重采样器转换或 WDL 重采样提供程序可以使用类似的技术,但恐怕我还没有可用的代码示例。

关于c# - 重采样 WasapiLoopbackCapture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28438025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com