我如何使用BufferedWaveProvider来解决这个问题

时间:2017-08-17 06:44:06

标签: c# naudio

我正在使用BufferedWaveProvider来创建声音项目。 例如,我有一个byte[]波数据 我想多次将它添加到缓冲区,每次我将添加2000个字节。 在第一次向缓冲区添加2000个字节时,waveout.Play()也会启动。(异步)当waveout读取到第1500个字节时,我将添加更多2000个字节,更多2000个字节时waveout读取第二个2000字节的第1500个字节...直到完成波形数据的byte[]

这可以通过 NAudio 来实现。 请为此提供一些解决方案。 非常感谢你。 下面是我的代码示例

public async Task StartDummySoundSource(BufferedWaveProvider provider)
        {
            // check if total of data is buffered
            endFlag = 0;
            do
            {
                   // i will get 2000bytes of wave data here(it is below of btmp)
            if(the byte[] is run out)
            {
            endFlag = 1;
            }
                provider.AddSamples(btmp, 0, r * sizeof(short));
                await Task.Delay(50);
            }
            while (endFlag == 0);

点击“播放”按钮时:

private void playBtn_Click(object sender, EventArgs e)
{
    var bufferedWaveProvider = new BufferedWaveProvider(new WaveFormat(16000, 16, 2));

        Task t = StartDummySoundSource(bufferedWaveProvider);

        wavPlayer.Init(bufferedWaveProvider);

        wavPlayer.Play();
}

0 个答案:

没有答案