c# - 使用带有常量传入 byteArray 的 MixingSampleProvider
问题描述
我正在创建一个包含音频的聊天应用程序。因为您可以同时从多个用户获取音频/不创建缓冲区,所以您需要能够一次输出多个声音。目前,我正在使用多个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, 0, bytesRead.Length);
_waveOut.Init(provider);
_waveOut.Play();
UDPc.BeginReceive(new AsyncCallback(ReceiveUdpMessage), null);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
我读到您可以使用MixingSampleProvider
一次播放多个声音,但提出了几个问题。
在本教程中,它展示了如何使用它,但它添加了很多我认为我不需要的东西。最重要的是,它取自文件而不是字节数组。
我对 Naudio 还很陌生,而且我真的不明白如何创建一个基本mixingSampleProvider
的字节数组并播放它。有人知道创建那个吗?
解决方案
推荐阅读
- sockets - 当网卡收到数据时,网络中断处理程序会做什么?
- excel - 如何在 excel 中为 Pivot Cache 分配更多内存?
- flutter - 如何在 Flutter 中从 Linux/Windows 代码运行 Dart 回调调度程序?
- apache - 从 apache Web 服务器访问正确的网站文件
- keras - Matterport Mask R-CNN Tensorflow 2 - 没有看到个人损失,而是只获得训练和验证损失
- postgresql - 为什么 json_agg 函数中的列显示顺序比临时表的变化 - PostgreSQL
- matlab - 如何在 Matlab 中使用自己的类进行属性定义?
- symfony - 如何在 Symfony 5.4 中使用 NotifierHandler 和独白
- python - 找不到 Django style.css
- wordpress - 如何在wordpress中更新自动更新插件时间间隔