我正在使用下面的代码块从麦克风接收样本并将其传递到SIP呼叫上的RTP频道。问题是样品每200ms到达一次,而我每隔20ms就要到达一次。样本的大小合适,20ms的采样间隔为20ms,只是20ms的样本每200ms才会到达。我可能在设置WaveInEvent的时候做些蠢事吗?
var _waveInEvent = new WaveInEvent();
_waveInEvent.BufferMilliseconds = 20;
_waveInEvent.NumberOfBuffers = 1;
_waveInEvent.DeviceNumber = 0;
_waveInEvent.DataAvailable += RTPChannelSampleAvailable;
_waveInEvent.WaveFormat = new WaveFormat(8000, 16, 1);
答案 0 :(得分:1)
您通常至少有两个缓冲区,因此您可以检查一个缓冲区而另一个填充缓冲区。 对于WaveIn来说,20ms可能有点快。检查DataAvailable回调缓冲区中有多少字节。使用您的值,您应该一次获得320个字节。