【发布时间】:2011-07-20 10:29:46
【问题描述】:
我正在实现一个程序,它从输入设备读取音频流并使用 NAudio 将其发送到输出设备。为此,我使用WaveIn 及其DataAvailable 事件从输入流中获取数据。写入数据,我即将使用WaveOut,这也意味着我需要使用IWaveProvider的一些实现。使用队列来满足我的需要似乎非常简单。除了一件事:当队列为空并调用Read() 方法时会发生什么?我在文档中没有找到任何关于此的内容。我认为我有的选项:
- 该方法应该阻塞,直到一些数据可用。
- 该方法立即返回 0,表示当前没有可用数据。
- 用零填充缓冲区。
我在考虑使用选项 1 或 2,但后来我发现 BufferedWaveProvider(和 WaveInProvider,内部使用 BufferedWaveProvider)使用选项 3。据此,我推断选项 3 是首选.
问题是,我是否推断正确,我应该使用选项 3 吗?如果我使用选项 1 或 2 会发生什么?那还能用吗?
【问题讨论】:
标签: audio audio-streaming naudio