我正在使用VOIP Windows Phone项目(Windows Phone的软电话应用程序)。目前,我(Windows手机软电话)可以接收和听到另一部软电话的声音,只有一种方式。我可以将我的语音(RTP数据包)发送到另一部软电话,但它包含完整的噪音。我按照http://www.codeproject.com/Articles/14237/Using-the-G711-standard?msg=2573223#xx2573223xx对U-law和PCM之间的RTP数据包进行编码和解码。解码功能对我很好,但编码没有。
我解码了RTP数据包,并且采样率为8000Khz(它是U-law格式的采样率)。这是我的代码:
SoundEffect soundEffect = new SoundEffect(buffer, 8000, AudioChannels.Mono);
SoundEffectInstance soundInstance = soundEffect.CreateInstance();
soundInstance.Play();
关于编码,我使用Windows Phone的麦克风录制语音=>编码到U-Law格式=>放入RTP数据包=>发送。但这些数据包包含完整的噪音,而另一部软电话(目的地呼叫)仅接收噪音和噪音。
麦克风录制数据的格式为:PCM 16位 - 16KHz。你有什么解决方案可以帮我解决吗?
关心并非常感谢你。
答案 0 :(得分:0)
@Rowland: 我使用WP的麦克风来捕获数据
public Microphone microphone = Microphone.Default;
private byte[] buffer;
Queue<byte[]> recordedVoice = new Queue<byte[]>();
每次都会获得320byte
microphone.GetData(buffer);
我把它保存到队列
recordedVoice.Enqueue(buffer);
然后我将recordVoice的每个项目编码为U-Law格式(从http://www.codeproject.com/Articles/14237/Using-the-G711-standard?msg=2573223#xx2573223xx引用的编码函数):
byte[] encoded = G711MuLaw.G711MuLawEncode(recordedVoice.Dequeue());
但它没有正确编码。
@sipwiz:我瘦了NAudio不支持WP7,因为它是一个C#项目,而不是Silverlight。
@Rowland&amp; sipwiz:收到你的回复后我很高兴,非常感谢你。