Я работаю над проектом VOIP Windows Phone (программное приложение для Windows Phone). В настоящее время я (программный телефон Windows phone) могу принимать и слышать голос другого программного телефона, только ОДНОСТОРОННИЙ. Я могу отправить свой голос (пакеты RTP) на другой софтфон, но он содержит полный шум. Я следовал этому http://www.codeproject.com/Articles/14237/Using-the-G711-standard?msg=2573223#xx2573223xx для кодирования и декодирования RTP-пакета между U-законом и PCM. Функция декодирования у меня работала хорошо, а кодирование — нет.
Я расшифровал пакет RTP и воспроизвел его с частотой дискретизации 8000 кГц (это частота дискретизации формата U-law). Вот мой код для воспроизведения:
SoundEffect soundEffect = new SoundEffect(buffer, 8000, AudioChannels.Mono);
SoundEffectInstance soundInstance = soundEffect.CreateInstance();
soundInstance.Play();
А что касается кодирования, я использовал микрофон Windows Phone для записи голоса => кодировать в формат U-Law => поместить в пакет RTP => отправить. Но эти пакеты содержат полный шум, а другой программный телефон (звонок назначения) принимает только шум и шум.
Формат записанных данных микрофона: PCM 16 бит - 16 кГц. Есть ли у вас какие-либо решения, которые помогут мне решить эту проблему?
С уважением и большое спасибо.