【问题标题】:How to VoIP using NAUDIO如何使用 NAUDIO 进行 VoIP
【发布时间】:2013-11-01 09:25:49
【问题描述】:

我正在使用 NAUDIO 和 Sockets 开发一个 voip 服务器-客户端应用程序。

我已经阅读了 naudio 的文档,我已经尝试了很多从麦克风获取数据然后将其发送给客户端的东西,你可以获取数据,但是你必须先将它保存到一个字节数组中发送它几乎就像使用 TCP 发送文件一样。

如何从 naudio 获取数据并同时使用 UDP 协议将其“流式传输”到客户端。

提前致谢。

【问题讨论】:

    标签: c# udp streaming voip naudio


    【解决方案1】:

    如果您下载源代码,NAudio 在示例中有一个网络聊天演示,它很好地展示了如何实现一个非常简单的聊天应用程序。

    基本上你希望客户做的是这样的:

    void Initialize() 
    {
        waveIn = new WaveIn();
        waveIn.BufferMilliseconds = 50;
        waveIn.DeviceNumber = inputDeviceNumber;
        waveIn.WaveFormat = codec.RecordFormat;
        waveIn.DataAvailable += waveIn_DataAvailable;
        waveIn.StartRecording();
        ...
    }
    
    void waveIn_DataAvailable(object sender, WaveInEventArgs e)
    {
       //Encode and send e.Buffer
    }
    

    这样,您每 50 毫秒(或您将缓冲区设置为多长)获得一个字节数组并将其发送到服务器。但是,您需要对其进行编码,因为发送未编码的声音会占用太多带宽。 NAudio 有自己的编解码器,所以这应该不是什么大问题。 NAudio 的网络聊天演示见here

    如果您计划实现客户端到客户端的 voip(通过 p2p 或通过服务器本身流式传输),需要考虑的另一件事是一个很好的网络库来处理所有通信。我在一个类似的项目中使用了Lidgren,效果很好。它是开源的,但可以轻松设置以满足您的需求。

    【讨论】:

      【解决方案2】:

      NAudioDemo 应用中有一个名为“网络聊天”的演示,它从麦克风录制,使用编解码器压缩音频,然后通过 UDP 发送出去。它还从 UDP 接收音频,解压缩并播放。因此,查看that code 应该会为您指明正确的方向。它没有显示在 UDP 之上使用任何协议,因此只有原始压缩音频通过网络发送,没有时间戳或正在使用的编解码器的指示。

      【讨论】:

        猜你喜欢
        • 2013-08-09
        • 1970-01-01
        • 2014-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-14
        • 2018-04-23
        • 1970-01-01
        相关资源
        最近更新 更多