问题描述
我正在创建一个包含音频的聊天应用程序。因为您可以同时从多个用户处获取音频/不创建缓冲区,所以您需要能够一次输出多个声音。目前,我正在使用多个 WaveOut
对象和 BufferedWaveProvider
来播放从 UDP 收到的音频我在后台随机点击(阅读它是由于对象突然停止而发生的)所以打开并且关闭 Waveout 对象并不是最好的:
private void ReceiveUdpMessage(IAsyncResult ar)
{
try
{
byte[] bytesRead = UDPc.EndReceive(ar,ref ep);
DirectSoundOut _waveOut = new DirectSoundOut();
BufferedWaveProvider provider = new BufferedWaveProvider(new WaveFormat(44100,16,2));
provider.discardOnBufferOverflow = true;
provider.AddSamples(bytesRead,bytesRead.Length);
_waveOut.Init(provider);
_waveOut.Play();
UDPc.BeginReceive(new AsyncCallback(ReceiveUdpMessage),null);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
我了解到您可以使用 MixingSampleProvider
一次播放多个声音,但会出现一些问题。
在 this tutorial 中,它展示了如何使用它,但它添加了很多我认为不需要的东西。最重要的是,它取自文件而不是字节数组。
我对 Naudio 还很陌生,但我真的不明白如何创建一个基本的 mixingSampleProvider
来接受字节数组并播放它。有人知道要创建那个吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)