• freeswitch之媒体协商模式


    • 默认模式:

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

    1. <extension name="Local_Extension">
    2. <condition field="destination_number" expression="^(10[01][0-9])$">
    3. + <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

    1. <extension name="Local_Extension">
    2. <condition field="destination_number" expression="^(10[01][0-9])$">
    3. + <action application="set" data="inbound-bypass-media=true"/>

    • 关键说明
    1. 默认方式在主、被叫编码协商不一致时,提供转码能力,支持录音
    2. 代理模式负责转发媒体数据,可以处理nat问题
    3. 旁路模式不修改SDP参数,也不转发媒体数据,一般用于通话双方在局域网内场景

  • 相关阅读:
    天锐绿盾 | 如何防止开发部门源代码泄露、外泄?
    web测试和app测试的区别?
    vue3中动态设置ref,如表格中使用级联选择器
    ios环境搭建
    spring ioc
    FFplay文档解读-26-视频过滤器一
    路由缓存问题 | vue-router的导航守卫
    VNC Viewer方式的远程连接树莓派
    函数指针数组指针(指向函数指针数组的指针)
    研究生期间工作记录
  • 原文地址:https://blog.csdn.net/szkbsgy/article/details/126472886