首页 > 解决方案 > 使用带有常量传入 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的字节数组并播放它。有人知道创建那个吗?

标签: c#naudio

解决方案


推荐阅读