• 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参数,也不转发媒体数据,一般用于通话双方在局域网内场景

  • 相关阅读:
    lua 光速入门
    某光伏行业头部企业联合谢宁老师《向华为学习 业务领先的战略规划SP(BLM)和战略解码BP(BEM)》训战内训成功举办
    二叉搜索树
    测试平台项目部署二(手动部署改成Dockerfile)
    leecode面试题 04.10. 检查子树
    【leetcode】【剑指offer Ⅱ】035. 最小时间差
    C4D遇到的动力学模拟问题怎么办?看完本文就知道
    多线程【初阶-上篇】
    JS事件参数对象event
    【C++】:STL——标准模板库介绍 || string类
  • 原文地址:https://blog.csdn.net/szkbsgy/article/details/126472886