- 默认模式:
主叫发送呼叫INVITE到freeswitch,freeswitch在呼叫被叫时,使用自己的媒体编码能力呼叫被叫。这样freeswitch分别与主、被叫进行媒体协商时,可以使用主、被叫不同时支持的编码进行通话。freeswitch收到主、被叫的媒体数据后,进行解码、转码、重新编码再发给对端。
图中,左边是主叫发给freeswitch的INVITE媒体参数,右边是freeswitch发给被叫INVITE的媒体参数
配置:默认就是此种模式
图中,左边是主叫发给freeswitch的INVITE媒体参数,右边是freeswitch发给被叫INVITE的媒体参数
- 代理模式
主叫发送呼叫INVITE到freeswitch,freeswitch在呼叫被叫时,使用主叫的媒体编码能力呼叫被叫。这样freeswitch分别与主、被叫进行媒体协商时,使用的编码是双方都支持的,不需要转码。freeswitch负责接收双方媒体数据并转发给对端。
图中,左边是主叫发给freeswitch的INVITE媒体参数,右边是freeswitch发给被叫INVITE的媒体参数
配置:
conf/dialplan/default.xml:
设置proxy_media=true
<extension name="Local_Extension">
<condition field="destination_number" expression="^(10[01][0-9])$">
+ <action application="set" data="proxy_media=true"/>
- 旁路模式
主叫发送呼叫INVITE到freeswitch,freeswitch在呼叫被叫时,使用主叫的媒体能力(整个SDP)呼叫被叫。这样由主、被叫独立进行媒体协商时,freeswitch不参与媒体传输,建立通话后,媒体数据(RTP)在主、被叫之间直接传输,不需要经过freeswitch处理。
图中,左边是主叫发给freeswitch的INVITE媒体参数,右边是freeswitch发给被叫INVITE的媒体参数
配置:
conf/dialplan/default.xml:
设置inbound-bypass-media=true
<extension name="Local_Extension">
<condition field="destination_number" expression="^(10[01][0-9])$">
+ <action application="set" data="inbound-bypass-media=true"/>
- 关键说明
- 默认方式在主、被叫编码协商不一致时,提供转码能力,支持录音
- 代理模式负责转发媒体数据,可以处理nat问题
- 旁路模式不修改SDP参数,也不转发媒体数据,一般用于通话双方在局域网内场景