NAudio wavein NumberOfBuffers设置的目的是什么?

时间:2014-10-07 15:13:50

标签: naudio

我有一个非常简单的应用程序,可以监视计算机声卡,以获取连接到声卡的外部设备产生的信号。我正在使用NAudio与声卡进行交互:

  wavein = New NAudio.Wave.WaveIn
  wavein.DeviceNumber = _deviceId
  wavein.WaveFormat = New NAudio.Wave.WaveFormat(44100, 1)
  wavein.BufferMilliseconds = 250
  AddHandler wavein.DataAvailable, AddressOf onDataAvailable
  wavein.StartRecording()

我注意到可以调整wavein对象使用的缓冲区数量,例如:

  wavein.NumberOfBuffers = 5

默认的NumberOfBuffers设置为3我相信。有没有理由想要改变缓冲区的数量?如果不是我的特定应用,那么对于另一种类型的应用程序?

1 个答案:

答案 0 :(得分:3)

缓冲区依次循环,所以如果你有3个缓冲区,它会填充一个并返回它,然后填充下一个缓冲区,然后填充下一个缓冲区,然后返回第一个缓冲区。通常2绰绰有余。主要的是你的应用程序在waveIn开始重写之前完成处理该缓冲区中的音频。

这个属性可配置并且默认为3的原因是当我在2002年开始创建NAudio时,我的计算机不够强大,无法在没有口吃的情况下播放音频,除非我使用了至少3个缓冲区(我有一个如果我没记错的话,400MHz Pentium III)。如今CPU的速度要快得多,这对你来说不太可能是一个问题。