【问题标题】:Using NAudio with UDP and no microphone使用带有 UDP 且没有麦克风的 NAudio
【发布时间】: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


    【解决方案1】:

    显然没有声卡你不能播放音频。所以摆脱所有与WaveOut 相关的代码,并创建一个WaveFileWriter 代替。当您收到DataReceived 事件时,将接收到的音频写入WaveFileWriter(使用Write 方法)。然后确保完成后DisposeWaveFileWriter

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      • 1970-01-01
      相关资源
      最近更新 更多