主叫发送呼叫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"/>