freeswitch媒体协商的优先级方案

概述
freeswitch是一款简单好用的VOIP开源软交换平台。
不同的媒体格式各有优缺点,实际环境中的应用要根据线路和客户的实际需求确定。
本文中介绍一种较为通用的媒体配置方案,可以适配大部分场景。
环境
centos:CentOS release 7.0 (Final)或以上版本
freeswitch:v1.10.7
GCC:4.8.5
测试环境
测试环境的网络结构如下。B路被叫部分支持“PCMA,G729”,部分只支持“PCMA”。B路响应180的时候,fs137需要对A路放回铃音。
A(PCMA,G729) -> fs137 -> B(PCMA[,G729])
fs137的媒体需求优先级。优先在AB路使用G729,次选在AB路使用PCMA,尽量不协商转码。
配置方案
修改 conf/vars.xml。
<X-PRE-PROCESS cmd="set" data="global_codec_prefs=G729,PCMA"/>
<X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=G729,PCMA"/>
修改拨号计划 conf/test.xml
<action application="set" data="inherit_codec=true"/>
<action application="export" data="absolute_codec_string=G729,PCMA" />
<action application="export" data="rtp_codec_negotiation=greedy" />
测试
测试关注的几种常见场景。
A(PCMA,G729) -> fs137 -> B(PCMA,G729)

A(PCMA,G729) -> fs137 -> B(PCMA)

A(PCMA,G729) -> fs137 -> B(PCMA),B路先响应180,fs137对A路响应183并放音。

总结
今天介绍了一种比较通用的媒体配置方案,可以适配大部分场景。
实际的生产环境中,由于运营商线路和客户的特殊性,情况会更加复杂。
媒体配置的大原则,优先使用G729,次选PCMA,尽量不协商成转码的方案。
空空如常
求真得真
freeswitch媒体协商的优先级方案的更多相关文章
- FreeSWITCH媒体转码配置
一.说明: FreeSWITCH版本1.6.13二.测试准备 软电话A的语音编码只配置iLBC:软电话B的语音编码只配置PCMU: A->B,编码协商失败,收到488消息. 三.修改文件vars ...
- freeswitch 编码协商
编辑 /usr/local/freeswitch/conf/sip_profiles/internal.xml 添加注释 <param name="inbound-zrtp-p ...
- 个推基于 Apache Pulsar 的优先级队列方案
作者:个推平台研发工程师 祥子 一.业务背景在个推的推送场景中,消息队列在整个系统中占有非常重要的位置.当 APP 有推送需求的时候, 会向个推发送一条推送命令,接到推送需求后,我们会把APP要求推送 ...
- 《FreeSWITCH: VoIP实战》:SIP 模块 - mod_sofia
SIP 模块是 FreeSWITCH 的主要模块,所以,值得拿出专门一章来讲解. 在前几章时里,你肯定见过几次 sofia 这个词,只是或许还不知道是什么意思.是这样的,Sofia-SIP 是由诺基亚 ...
- Freeswitch配置之sofia
SIP模块 - mod_sofia SIP 模块是 FreeSWITCH的主要模块. 在 FreeSWITCH中,实现一些互联协议接口的模块称为 Endpoint.FreeSWITH支持很多的 End ...
- freeswitch对接WEBRTC的一个candidate问题
概述 近几年,WEBRTC的完善与成熟,使得网页上使用webrtc的应用越来越多. Freeswitch是一个开源的软交换平台,可以直接支持webrtc的对接方式. 最近在测试fs和webrtc的对接 ...
- 给Asp.Net MVC及WebApi添加路由优先级
一.为什么需要路由优先级 大家都知道我们在Asp.Net MVC项目或WebApi项目中注册路由是没有优先级的,当项目比较大.或有多个区域.或多个Web项目.或采用插件式框架开发时,我们的路由注册很可 ...
- 【转载】为ASP.NET MVC及WebApi添加路由优先级
路由方面的: 转载地址:http://www.jb51.net/article/73417.htm Author:lijiao 这是一个对Asp.Net Mvc的一个很小的功能拓展,小项目可能不太需要 ...
- HTTP/2的优先级
前言 记得HTTP/3即将标准化了.今日早读文章由@smallbonelu翻译授权分享. @smallbonelu,一枚爱好跑步的前端工程师 正文从这开始-- 以正确的顺序请求页面资源对于快速的用户体 ...
- 前端学HTTP之报文首部
前面的话 首部和方法配合工作,共同决定了客户端和服务器能做什么事情.在请求和响应报文中都可以用首部来提供信息,有些首部是某种报文专用的,有些首部则更通用一些.本文将详细介绍HTTP报文中的首部 结构 ...
随机推荐
- el-table 固定列错位问题
1. 问题描述:el-table使用固定列时,使用keep-alive后页面切换导致该列错位. 2. 解决方法:使用el-table的doLayout方法对表格进行重新布局 activated() { ...
- 如何为linux kernel贡献代码
参考: Linux内核文档:<如何让你的改动进入内核> - 广漠飘羽 - 博客园 提交内核补丁到Linux社区的步骤 - 广漠飘羽 - 博客园 建议: 内容具有时效性,需要阅读最新版本的同 ...
- LoadRunner——block(块)技术
一般情况下,loadrunner中的事务是统一执行的,多个事务所执行的次数是相同的,对于不同的事务执行不同的次数就要用到block(块)技术 block(块)技术主要应用于在一个脚本中实现不同事务.不 ...
- HDFS相关问题处理
机房搬迁后datanode启动失败,报错如下: 2022-10-21 10:28:40,551 INFO org.apache.hadoop.hdfs.server.common.Storage: L ...
- UE4 联网RPC部分
有些人生来就是为了奔跑,而有些人,则拥有更高的目标> 笔者近期在进行UE C++网络的一些开发,发现RPC这个部分它看起来很简单,理解起来也算不上难.但真正应用起来,对netcode经验不多的人 ...
- Vue项目目录树
- Java 数据库表关联更新
SqlServer 关联更新语句: update a set a.pname = b.name from 表a a inner join 表b b on a.pid = b.id MySQL 关联更新 ...
- 字典:求和计数(return知识巩固)
野餐用品计数 之前写过一段,字符在字符串中出现次数的代码 import pprint message = 'It was a bright cold day in April, ' \ 'and th ...
- jetson TX2 + opencv3.4 + python3 + 双目 +人脸检测
淘宝看到一款很便宜的双目,150元,就买了.想着用它学习一下opencv,好换个工作.当然,也想着能否用它做一些好玩的,比如三维重建之类高大上的东西.先用便宜的入个门,等以后眼界高了再看是不是买那些更 ...
- CF1338E JYPnation
题意:给定一个竞赛图,且其中不包含任意一组三元环 $(a, b, c)$,满足 $a \to d$,$b \to d$,$c \to d$,求每个点两两之间的距离之和(若无法达到即为 $614n$). ...