C# 使用带UDP且无麦克风的NAudio
我需要在指定的IP地址和端口上接收UDP数据,并使用C#和VS 2017将其转换为WAV文件。我在谷歌上搜索了一下,看到NAudio可以帮我做到这一点。因此,我在上下载了NAudioDemo,并在VS 2017年启动了NAudioDemo项目。在确保NAudio NuGet包已恢复后,我运行了该项目,选择要加载的网络聊天演示并单击加载按钮 这加载了网络聊天演示。 我在文本框中输入了正确的IP地址和端口号,并确保正确设置了压缩和协议值 您会注意到屏幕截图中的“输入设备”下拉列表尚未设置。这是因为我正在Windows Server 2012 R2上运行演示,服务器没有任何输入设备设置,下拉列表中也没有可选择的内容 当我单击开始流媒体按钮时,它调用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地址和端口号,并确保正确设置了压缩和协议值 您会注意到屏幕截图中的“输入设备”下拉列表尚未设置。这是因为
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
方法)。然后确保在完成后处理波形文件编写器