freeswitch媒体协商的优先级方案
概述
freeswitch是一款简单好用的VOIP开源软交换平台。
不同的媒体格式各有优缺点,实际环境中的应用要根据线路和客户的实际需求确定。
本文中介绍一种较为通用的媒体配置方案,可以适配大部分场景。
环境
centos:CentOS release 7.0 (Final)或以上版本
freeswitch:v1.10.7
GCC:4.8.5
测试环境
测试环境的网络结构如下。B路被叫部分支持“PCMA,G729”,部分只支持“PCMA”。B路响应180的时候,fs137需要对A路放回铃音。
A(PCMA,G729) -> fs137 -> B(PCMA[,G729])
fs137的媒体需求优先级。优先在AB路使用G729,次选在AB路使用PCMA,尽量不协商转码。
配置方案
修改 conf/vars.xml。
<X-PRE-PROCESS cmd="set" data="global_codec_prefs=G729,PCMA"/>
<X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=G729,PCMA"/>
修改拨号计划 conf/test.xml
<action application="set" data="inherit_codec=true"/>
<action application="export" data="absolute_codec_string=G729,PCMA" />
<action application="export" data="rtp_codec_negotiation=greedy" />
测试
测试关注的几种常见场景。
A(PCMA,G729) -> fs137 -> B(PCMA,G729)
A(PCMA,G729) -> fs137 -> B(PCMA)
A(PCMA,G729) -> fs137 -> B(PCMA),B路先响应180,fs137对A路响应183并放音。
总结
今天介绍了一种比较通用的媒体配置方案,可以适配大部分场景。
实际的生产环境中,由于运营商线路和客户的特殊性,情况会更加复杂。
媒体配置的大原则,优先使用G729,次选PCMA,尽量不协商成转码的方案。
空空如常
求真得真