C# 使用带UDP且无麦克风的NAudio

C# 使用带UDP且无麦克风的NAudio,c#,udp,wav,naudio,windows-server-2012-r2,C#,Udp,Wav,Naudio,Windows Server 2012 R2,我需要在指定的IP地址和端口上接收UDP数据,并使用C#和VS 2017将其转换为WAV文件。我在谷歌上搜索了一下,看到NAudio可以帮我做到这一点。因此,我在上下载了NAudioDemo,并在VS 2017年启动了NAudioDemo项目。在确保NAudio NuGet包已恢复后,我运行了该项目,选择要加载的网络聊天演示并单击加载按钮 这加载了网络聊天演示。 我在文本框中输入了正确的IP地址和端口号,并确保正确设置了压缩和协议值 您会注意到屏幕截图中的“输入设备”下拉列表尚未设置。这是因为

我需要在指定的IP地址和端口上接收UDP数据,并使用C#和VS 2017将其转换为WAV文件。我在谷歌上搜索了一下,看到NAudio可以帮我做到这一点。因此,我在上下载了NAudioDemo,并在VS 2017年启动了NAudioDemo项目。在确保NAudio NuGet包已恢复后,我运行了该项目,选择要加载的网络聊天演示并单击加载按钮

这加载了网络聊天演示。 我在文本框中输入了正确的IP地址和端口号,并确保正确设置了压缩和协议值

您会注意到屏幕截图中的“输入设备”下拉列表尚未设置。这是因为我正在Windows Server 2012 R2上运行演示,服务器没有任何输入设备设置,下拉列表中也没有可选择的内容

当我单击开始流媒体按钮时,它调用
NetworkChatPanel.Connect
方法,这将实例化一个新的
NetworkAudioPlayer
对象。在
NetworkAudioPlayer
类的构造函数中,它运行以下代码:

public NetworkAudioPlayer(INetworkChatCodec codec, IAudioReceiver receiver)
{
    this.codec = codec;
    this.receiver = receiver;
    receiver.OnReceived(OnDataReceived);

    waveOut = new WaveOut();
    waveProvider = new BufferedWaveProvider(codec.RecordFormat);
    waveOut.Init(waveProvider);
    waveOut.Play();
}
它创建一个新的
WaveOut
对象实例,并调用
WaveOut.Init
方法。这将导致引发以下异常:

在中发生类型为“NAudio.MmException”的未处理异常 发生NAudio.dll BadDeviceId调用waveOutOpen

我想知道引发异常是否是因为我运行的服务器没有输入设备。或者可能是别的什么

你能帮我在没有输入设备的情况下在Windows Server 2012 R2上运行和工作,这样我就可以将UDP数据保存为WAV文件吗?
谢谢。

显然,没有声卡,您无法播放音频。因此,去掉所有与WaveOut相关的代码,转而创建一个WaveFileWriter。当您收到
DataReceived
事件时,将接收到的音频写入
waveilewriter
(使用
write
方法)。然后确保在完成后处理
波形文件编写器