0
我正在使用下面的代码块从我的麦克风接收样本,并将它们传递到SIP呼叫上的RTP通道。问题是样本每200毫秒到达一次,而我期望它们每20毫秒。 20ms采样间隔为20ms采样间隔的正确大小,只是20ms采样只能每200ms到达一次。我可能在设置WaveInEvent时做一些傻事?WaveInEvent示例事件频率
var _waveInEvent = new WaveInEvent();
_waveInEvent.BufferMilliseconds = 20;
_waveInEvent.NumberOfBuffers = 1;
_waveInEvent.DeviceNumber = 0;
_waveInEvent.DataAvailable += RTPChannelSampleAvailable;
_waveInEvent.WaveFormat = new WaveFormat(8000, 16, 1);
我每次获得320个字节,但由于某种原因每200毫秒而不是每20毫秒。 – sipwiz 2012-03-21 19:48:00
好的,所以缓冲区大小是正确的,它不只是跟上。尝试2或3缓冲区和100ms,看看你得到什么频率。 – 2012-03-22 09:57:50
工作。我能够使用50ms和4个缓冲区(不知道这是否有所作为),并每隔50ms获取一次采样。 NAudio是否将缓冲区排队?我的意思是我可以依赖DataAvailable事件触发每个样本,还是一个事件可以有两个或更多个样本排队? – sipwiz 2012-03-22 11:19:43