本文来自csdn lidp http://blog.csdn.net/perfectpdl,转载注明出处,谢谢。
我建了一个 Freeswitch 内核研究 交流群, 45211986, 欢迎加入, 另外,提供基于SIP的通信服务器及客户端解决方案。
关于编码理论,可以看维基 http://en.wikipedia.org/wiki/Codec
1. freeswtich对高清(HD)语音编码的支持
freeswitch支持 大部分高清语音编码,包括Speex,G.722,G.722.1(Siren) 及SILK,与之对比,asterisk 1.8版本之前只支持采样为8000的常用语音编码,1.10后asterisk开始从新架构其media codec模块,以全面支持高清等宽频语音编码。
2.有些语音编码以模块方式加载(G729等),有的则属于freeswitch core部分(G711),系统默认不加载所有语音编码,对于没有加载的编码,可以通过配置
type,name,ikey codec,ADPCM (IMA),mod_spandsp codec,AMR,mod_amr codec,G.711 alaw,CORE_PCM_MODULE codec,G.711 ulaw,CORE_PCM_MODULE codec,G.722,mod_spandsp codec,G.723.1 6.3k,mod_g723_1 codec,G.726 16k,mod_spandsp codec,G.726 16k (AAL2),mod_spandsp codec,G.726 24k,mod_spandsp codec,G.726 24k (AAL2),mod_spandsp codec,G.726 32k,mod_spandsp codec,G.726 32k (AAL2),mod_spandsp codec,G.726 40k,mod_spandsp codec,G.726 40k (AAL2),mod_spandsp codec,G.729,mod_g729 codec,GSM,mod_spandsp codec,H.261 Video (passthru),mod_h26x codec,H.263 Video (passthru),mod_h26x codec,H.263+ Video (passthru),mod_h26x codec,H.263++ Video (passthru),mod_h26x codec,H.264 Video (passthru),mod_h26x codec,LPC-10,mod_spandsp codec,PROXY PASS-THROUGH,CORE_PCM_MODULE codec,PROXY VIDEO PASS-THROUGH,CORE_PCM_MODULE codec,Polycom(R) G722.1/G722.1C,mod_siren codec,RAW Signed Linear (16 bit),CORE_PCM_MODULE codec,Speex,mod_speex codec,iLBC,mod_ilbc
以模块方式加载的编码在目录 src\mod\codecs下面,所以如果我们想添加自己的编码,在此目录下参考其他实现即可,freeswitch对新编码的添加接口也及其简单,主要为注册几个四个回调,init,encode,decode,destroy,然后通过 switch_core_codec_add_implementation 把这几个回调的实现注册进去。
3. 设置编码的优先级
<X-PRE-PROCESS cmd="set" data="global_codec_prefs=G722,PCMA,PCMU,GSM"/> <X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=G722,PCMA,PCMU,GSM"/>
<settings> <param name="inbound-codec-prefs" value="$${global_codec_prefs}"/> <param name="outbound-codec-prefs" value="$${global_codec_prefs}"/> </settings>