我正在使用NAUDIO和套接字开发voip服务器-客户端应用程序。

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

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

提前致谢。

最佳答案

如果您下载源代码,则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。它是开源的,但可以轻松设置以满足您的需求。

关于c# - 如何使用NAUDIO进行VoIP,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19723988/

10-12 21:35