【发布时间】:2018-05-15 17:58:40
【问题描述】:
我需要在指定的 IP 地址和端口上接收 UDP 数据,并使用 C# 和 VS 2017 将其转换为 WAV 文件。我做了一些谷歌搜索并读到 NAudio 可以帮助做到这一点。于是我在https://github.com/naudio/NAudio上下载了NAudioDemo,并在VS 2017中打开了NAudioDemo项目。确保NAudio NuGet包恢复后,我运行项目,选择要加载的网络聊天演示并单击加载按钮。
这加载了网络聊天演示。 我在文本框中输入了正确的 IP 地址和端口号,并确保正确设置了压缩和协议值。
您会在屏幕截图中注意到输入设备下拉菜单尚未设置。这是因为我在 Windows Server 2012 R2 上运行演示,而服务器没有设置任何输入设备,并且下拉菜单中没有任何内容可供选择。
当我单击 Start Streaming 按钮时,它会调用 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 文件? 谢谢。
【问题讨论】:
标签: c# udp wav naudio windows-server-2012-r2