Частота события образца WaveInEvent - PullRequest
1 голос
/ 21 марта 2012

Я использую кодовый блок ниже, чтобы получать сэмплы с моего микрофона и передавать их в канал RTP при вызове SIP. Проблема в том, что образцы поступают каждые 200 мсек, тогда как я ожидаю их каждые 20 мсек. Выборки имеют правильный размер для интервала выборки 20 мс при 20 мс, просто выборки 20 мс поступают только каждые 200 мс. Возможно, я что-то делаю глупо с настройкой WaveInEvent?

var _waveInEvent = new WaveInEvent();
_waveInEvent.BufferMilliseconds = 20;
_waveInEvent.NumberOfBuffers = 1;
_waveInEvent.DeviceNumber = 0;
_waveInEvent.DataAvailable += RTPChannelSampleAvailable;
_waveInEvent.WaveFormat = new WaveFormat(8000, 16, 1);

1 Ответ

1 голос
/ 21 марта 2012

Обычно у вас есть как минимум два буфера, поэтому вы можете проверять один, пока другой заполнен. 20 мс может быть немного быстрым для WaveIn, чтобы справиться с этим. Проверьте, сколько байтов находится в буфере обратного вызова DataAvailable. С вашими значениями вы должны получать 320 байт за раз.

...