首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VOIP SIP -帮助从PCM编码到U-law

VOIP SIP -帮助从PCM编码到U-law
EN

Stack Overflow用户
提问于 2012-05-04 18:51:05
回答 1查看 1.5K关注 0票数 0

我正在做VOIP Windows Phone项目( Windows Phone的软件电话应用程序)。目前,我(Windows phone软电话)只能单向接收和听到另一部软电话的语音。我可以将我的语音(RTP数据包)发送到另一部软电话,但它包含完整的噪音。我遵循这个http://www.codeproject.com/Articles/14237/Using-the-G711-standard?msg=2573223#xx2573223xx来编码和解码U-law和PCM之间的RTP数据包。解码功能对我来说工作得很好,但是编码就不行了。

我解码RTP包并播放,采样率为8000 law(它是U- rate格式的采样率)。下面是我播放它的代码:

代码语言:javascript
复制
SoundEffect soundEffect = new SoundEffect(buffer, 8000, AudioChannels.Mono);
SoundEffectInstance soundInstance = soundEffect.CreateInstance();
soundInstance.Play();

在编码方面,我使用Windows Phone的麦克风将voice=>encode到U- RTP format=>put录制成实时传输协议packet=>Send。但是这些数据包包含完整的噪声,而另一个软电话(目标呼叫)只接收噪声和噪声。

麦克风记录数据的格式为: PCM 16 bit -16 The。你有什么办法帮我解决这个问题吗?

致以问候,非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2012-05-05 22:16:13

@Rowland:我用WP的麦克风采集数据

代码语言:javascript
复制
public Microphone microphone = Microphone.Default;     
private byte[] buffer; 
Queue<byte[]> recordedVoice = new Queue<byte[]>(); 

每次都会得到320byte

代码语言:javascript
复制
microphone.GetData(buffer);    

我把它保存到一个队列中

代码语言:javascript
复制
recordedVoice.Enqueue(buffer);

然后,我将把每一项法律编码成U- recordedVoice格式(从http://www.codeproject.com/Articles/14237/Using-the-G711-standard?msg=2573223#xx2573223xx引用的编码函数):

代码语言:javascript
复制
byte[] encoded = G711MuLaw.G711MuLawEncode(recordedVoice.Dequeue());

但它没有正确编码。

@sipwiz :我认为NAudio不支持WP7,因为它是一个C#项目,而不是Silverlight。

@Rowland & sipwiz :收到你的回复我很高兴,非常感谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10447408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档