我正在使用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();
}