我正在实现一个程序,用于从输入设备读取音频流并使用NAudio将其发送到输出设备。为此,我使用WaveIn
及其DataAvailable
事件从输入流中获取数据。要写数据,我即将使用WaveOut
,这也意味着我需要使用一些IWaveProvider
的实现。使用队列来实现我的需求似乎非常简单。除了一件事情:当队列为空并调用方法时会发生什么?在文档中我没有发现任何关于此的信息。选项我想我有:NAudio音频中继器
- 该方法应该阻塞,直到有些数据可用。
- 该方法立即返回0,表示当前没有数据可用。
- 用零填充缓冲区。
我想使用选项1或2,但后来我发现BufferedWaveProvider
(和WaveInProvider
,使用BufferedWaveProvider
内部),其使用选项3.从这一点,我推断选项3是优选的一个。
问题是,我推断是否正确,应该使用选项3?如果我使用选项1或2会发生什么?这甚至会工作吗?
感谢您的信息。 – svick