概述
freeswitch是一款简单好用的VOIP开源软交换平台。
在fs的使用过程中,某些场景只需要对rtp媒体做透传,又不需要任何处理。
在fs1.6的版本中,我们可以使用proxy_media来代理媒体的转发,媒体的协商由AB路端对端处理,fs不处理媒体协商,也不处理媒体流,包括录音,dtmf检测等,仅仅原样转发媒体流。
但是在fs的1.10.7版本中,proxy_media模式失效了。
同步测试了fs1.6.19版本和fs1.10.7版本,其中1.6版本是可以正常使用proxy_media模式的。
环境
CentOS 7.9
freeswitch 1.10.7
问题描述
部署简图如下。fs138为注册服务器,设置为bypass模式。fs137为as服务器,需要过媒体流。
A -- fs138 -- fs137 -- fs138 -- B
首先测试正常的媒体模式。dialplan如下。
<action application="set" data="inherit_codec=true"/>
<action application="export" data="absolute_codec_string=G729,PCMA" />
<action application="bridge" data="{sip_invite_call_id=${sip_call_id}}sofia/external/$1@10.55.55.138:5080"/>
修改dialplan,在bridge之前设置proxy_media模式。
<action application="set" data="inherit_codec=true"/>
<action application="export" data="absolute_codec_string=G729,PCMA" />
<action application="set" data="proxy_media=true"/>
<action application="bridge" data="{sip_invite_call_id=${sip_call_id}}sofia/external/$1@10.55.55.138:5080"/>
再次发起呼叫,截图中可以看到其中一路rtp媒体流未正常转发。
解决方案
暂无解决方案,也没有解决的预期。
总结
同步测试了fs1.6.19版本和fs1.10.7版本,其他版本未进行进一步的测试。
proxy media模式在某些场景下还是挺好用的。
空空如常
求真得真