我有一个非常简单的应用程序,可以监视计算机声卡,以获取连接到声卡的外部设备产生的信号。我正在使用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我相信。有没有理由想要改变缓冲区的数量?如果不是我的特定应用,那么对于另一种类型的应用程序?
答案 0 :(得分:3)
缓冲区依次循环,所以如果你有3个缓冲区,它会填充一个并返回它,然后填充下一个缓冲区,然后填充下一个缓冲区,然后返回第一个缓冲区。通常2绰绰有余。主要的是你的应用程序在waveIn开始重写之前完成处理该缓冲区中的音频。
这个属性可配置并且默认为3的原因是当我在2002年开始创建NAudio时,我的计算机不够强大,无法在没有口吃的情况下播放音频,除非我使用了至少3个缓冲区(我有一个如果我没记错的话,400MHz Pentium III)。如今CPU的速度要快得多,这对你来说不太可能是一个问题。