NAudio ASIO播放wav

时间:2017-02-26 23:00:01

标签: c# naudio sharpdevelop asio

我正在使用NAudio和ASIO播放一系列wav文件。我需要使用ASIO,因为声卡只支持它。我能够以这种方式玩每个wav:

     waveRead = new WaveFileReader(completeStreamMS); //completeStreamMS is a memorystream
     waveRead.Position = 0;
     pcm = new WaveChannel32(waveRead);
     reductionStream = new BlockAlignReductionStream(pcm);
     reductionStream.Position = 0;
     waveOutDevice.Init(reductionStream);
     waveOutDevice.Play();

现在我需要在启动wav之前插入1秒的静音。我找到的唯一方法是使用OffsetSampleProvider,但如果我喜欢这个

     ISampleProvider isp = WaveExtensionMethods.ToSampleProvider(waveRead);
     var offset = new SampleProviders.OffsetSampleProvider(isp);
     offset.DelayBy = TimeSpan.FromSeconds(1);
     var wp = new SampleProviders.SampleToWaveProvider(offset);
     waveOutDevice.Init(wp);`
     waveOutDevice.Play();

第一个wav播放得很好,但是一旦我停止()waveOutDevice或者我尝试重新实现一个新的,程序的执行就停在那个位置

System.ExecutionEngineException
Cannot intercept exception. Debugged program can not be continued and properties can not be evaluated.

我无法理解为什么。请帮忙。 感谢

1 个答案:

答案 0 :(得分:0)

使用ASIO,最好只打开一次输出设备,让它继续播放然后更改其输入。例如,您可以添加和删除用作输入的MixingSampleProvider项。