我有一个非常简单的应用程序,它可以监视计算机声卡,以检测声卡上连接的外部设备产生的信号。我正在使用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。有什么理由会想要更改缓冲区的数量吗?如果不是针对我的特定应用程序,那么针对另一种类型的应用程序?
缓冲区依次循环,因此如果您有3个缓冲区,它将填充一个缓冲区并返回它,然后填充下一个缓冲区,然后填充下一个缓冲区,然后返回第一个缓冲区。通常2绰绰有余。最主要的是,您的应用在waveIn开始再次覆盖其顶部之前,已完成了对该缓冲区中音频的处理。
此属性可配置且默认为3的原因是,当我在2002年开始创建NAudio时,我的计算机没有足够的功能来播放音频而不会出现卡顿现象,除非我至少使用了3个缓冲区(如果我使用400MHz Pentium III,正确记得)。如今,CPU的速度如此之快,以至于您不太可能会遇到问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句