FreeSWITCH 1.10.10 简单图形化界面14 - 添加mod_729编码转码支持

FreeSWITCH 1.10.10 简单图形化界面14 - 添加729编码转码支持

  • 0、 界面预览
  • 1、G729简介
  • 2、透传模式使用G729
  • 3、转码模式使用G729


FreeSWITCH界面安装参考:https://blog.csdn.net/jia198810/article/details/132479324

0、 界面预览

http://myfs.f3322.net:8020/
用户名:admin,密码:admin

FreeSWITCH界面安装参考:https://blog.csdn.net/jia198810/article/details/132479324

1、G729简介

G.729是一种由许多VoIP供应商支持的高质量、低带宽的音频编解码器。使用G.729编码的通话的语音质量与标准PSTN通话所使用的G.711编码器相当。然而,G.729通话所需的带宽要比G.711通话低得多。使用G.729的企业能更有效地利用可用的网络带宽。

G.729使用的带宽大约是G.711的1/8(8 kbit/s对比64 kbit/s)。这意味着使用G.729编码进行通话时,需要的带宽只有G.711编码通话所需带宽的约1/8。这种高效的带宽利用是G.729编解码器的一大优势。

FreeSWITCH的G.729提供两种使用方式:透传(Passthrough)和转码(Transcoding),FreeSWITCH自带的G729编码,在透传时不需要许可证,但是也有一些限制。如果需要转码,就需要在FreeSWITCH网站购买G.729许可证。一路通话(转码),一个许可证。

2、透传模式使用G729

FreeSWITCH的自带的G729可以在透传模式中使用,但是默认配置不是透传模式,如直接使用G729编码,Log会提示:

[ERR] mod_g729.c: 102 This code is only usable in passthrough mode!

要在FreeSWITCH中通过透传模式使用G729,需要修改配置文件和呼叫规则。

# 在conf/sip_profiles/internal.xml中启用或者添加inbound-bypass-media参数
<param name="inbound-bypass-media" value="true"/>
# 在呼叫规则桥接之前,添加bypass_media变量
<action application="set" data="bypass_media=true"/> 
<action application="bridge" data="user/1000"/> 

配置完毕后,在fs_cli中执行reload mod_sofia。

  • 测试一下:

将主被叫分机的编码都启用G729,测试一下看是否可以使用G729正常通话,如下图:

在这里插入图片描述

3、转码模式使用G729

FreeSWITCH 默认情况下不提供 G.729 码流转码功能,但可以通过使用开源的 bcg729 来实现。bcg729 是一个由Belledonne Communications开发的开源实现,可以在 FreeSWITCH 中作为 G.729 编解码器的替代选择。通过集成 bcg729,用户可以在 FreeSWITCH 中实现对 G.729 编解码的支持,也可以进行 G.729 码流转码。

开源的bcg729地址:https://github.com/xadhoom/mod_bcg729

#编译bcg729#先补下依赖  yum install gcc libtool autoconf automake#在进入源码../src/mod/endpoints目录下拉去源码git clone https://github.com/typefo/mod_g729.git#进入../src/mod/endpoints/mod_g729目录,并执行编译
cd ../src/mod/endpoints/mod_g729
make
#编译时如果提示找不到头文件,可以将FreeSWITCH源码include目录下的对应头文件复制到../mod_g729/bcg729/include/ 目录,#还有其他找不到的头文件可以使用find命令在FreeSWITCH源码目录下搜索,然后复制到../mod_g729/bcg729/include/目录,然后再重新编译,编译完成后,将mod_bcg729.so复制到FreeSWITCH的库目录 /usr/lib/freeswitch/mod/ (建议先备份原 mod_g729.so )  
cp mod_g729.so /usr/lib/freeswitch/mod/# 配置/etc/freeswitch/autoload_configs/modules.conf.xml 启动自动加载 mod_g729<load module="mod_g729"/># 在fs_cli中重启FreeSWITCHfsctl shutdown restart  

如果安装了 简单图形化界面 ,可以在系统中直接拷贝编译后的mod_g729.so模块,直接替换FreeSWITCH自带的。

开启FreeSWITCH的转码功能,在conf/vars.xml中修改或添加media_mix_inbound_outbound_codecs变量并添加G729编码。

#在conf/vars.xml中修改或添加media_mix_inbound_outbound_codecs变量<X-PRE-PROCESS cmd="set" data="media_mix_inbound_outbound_codecs=true"/><X-PRE-PROCESS cmd="set" data="global_codec_prefs=PCMU,PCMA,G729"/><X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=PCMU,PCMA,G729"/>
# 修改vars.xml后,要重启FreeSWITCH
# 在fs_cli中重启FreeSWITCHfsctl shutdown restart  
#或者在呼叫规则桥接时,设置media_mix_inbound_outbound_codecs变量
<action application="bridge" data="{media_mix_inbound_outbound_codecs=true}user/1000" />
# 修改呼叫规则后,要重新加载xml
# 在fs_cli中执行
reloadxml
  • 测试一下:

将主被叫分机的其中一方编码设置为G729,测试一下看是否可以实现其他编码和G729编码正常通话,如下图:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2805992.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

装修避坑干货|无把手柜门的5种形式。福州中宅装饰,福州装修

无把手柜门有多种形式&#xff0c;每种形式都有其独特的设计和功能。以下是其中几种常见的形式&#xff1a; ❶直接扣柜门&#xff1a;常见于吊柜柜门或中间断开设计的收纳柜&#xff0c;直接借用柜门的厚度拉开即可&#xff0c;无需把手&#xff0c;使视觉更简洁。地柜柜门也可…

程序环境和预处理(1)

文章目录 目录1. 程序的翻译环境和执行环境2. 详解编译链接2.1 翻译环境2.2 编译本身也分为几个阶段2.3 运行环境 3. 预处理详解3.1 预定义符号3.2 #define3.2.1 #define 定义标识符3.2.2 #define 定义宏3.2.3 #define 替换规则3.2.4 #和##3.2.5 带副作用的宏参数3.2.6 宏和函数…

Windows Server 2012 IIS中发布ASP.NET CORE项目

服务器安装IIS&#xff1a; 微软官网下载SDK&#xff1a; 下载Runtime官网&#xff1a;https://dotnet.microsoft.com/download/dotnet-core 安装成功重启IIS&#xff1a; VS发布项目&#xff1a;

osmnx笔记:从OpenStreetMap中提取点和边的shp文件(FMM文件准备内容)

1 导入库 import osmnx as ox import time from shapely.geometry import Polygon import os import numpy as np 2 提取Openstreetmap 的graph Gox.graph_from_place(Huangpu,Shanghai,China,network_typedrive,simplifyTrue) ox.plot_graph(G) 3 提取graph中的点和边 gdf…

leetcode 2583.二叉树中的第K大层和

题目 给你一棵二叉树的根节点 root 和一个正整数 k 。 树中的 层和 是指 同一层 上节点值的总和。 返回树中第 k 大的层和&#xff08;不一定不同&#xff09;。如果树少于 k 层&#xff0c;则返回 -1 。 注意&#xff0c;如果两个节点与根节点的距离相同&#xff0c;则认为…

无公网IP情况下如何远程查看本地群晖NAS存储的文件资源

文章目录 前言本教程解决的问题是&#xff1a;按照本教程方法操作后&#xff0c;达到的效果是前排提醒&#xff1a; 1. 搭建群晖虚拟机1.1 下载黑群晖文件vmvare虚拟机安装包1.2 安装VMware虚拟机&#xff1a;1.3 解压黑群晖虚拟机文件1.4 虚拟机初始化1.5 没有搜索到黑群晖的解…

进程1——进程与线程——day09

今天&#xff0c;主要讲一下进程的一些基本概念和一些接口 首先是进程的基本概念&#xff1a; 1.进程: 程序&#xff1a;存放在外存中的一段数据组成的文件 进程&#xff1a;是一个程序动态执行的过程,包括进程的创建、进程的调度、进程的消亡 2.进程相关命令: 1.top 动态…

【Nginx】微信小程序后端开发、一个域名访问多个服务

【Nginx】微信小程序后端开发、一个域名访问多个服务 1. 微信小程序后端开发 对于后端程序员&#xff0c;其实你们的职责就是干老本行&#xff0c;即写接口和服务&#xff0c;让前端能够访问你的接口就行&#xff0c;必要时需要查看微信小程序开发文档去向微信服务器发请求。…

回归预测 | Matlab实现SSA-BiLSTM-Attention麻雀算法优化双向长短期记忆神经网络融合注意力机制多变量回归预测

回归预测 | Matlab实现SSA-BiLSTM-Attention麻雀算法优化双向长短期记忆神经网络融合注意力机制多变量回归预测 目录 回归预测 | Matlab实现SSA-BiLSTM-Attention麻雀算法优化双向长短期记忆神经网络融合注意力机制多变量回归预测预测效果基本描述程序设计参考资料 预测效果 基…

零基础手把手教你创建微信小程序(二)·创建第一个微信小程序以及了解小程序代码的构成

零基础手把手教你创建微信小程序&#xff08;一&#xff09;微信小程序开发账号的注册以及开发者工具的安装和使用-CSDN博客 目录 ​编辑 1. 创建微信小程序 1.1 基本信息 1.2 在模拟器上查看项目效果 1.3 在真机上预览项目效果 1.4 主界面的5个组成部分 1.4.1 菜单…

NPM私服搭建(verdaccio)

官网地址&#xff1a;https://verdaccio.org/ 概述 Verdaccio 是一个流行的 Node.js 包管理器的代理工具&#xff0c;它允许您在本地或私有网络上轻松地创建和管理 npm 包仓库。通过 Verdaccio&#xff0c;开发团队可以建立自己的 npm 包仓库&#xff0c;以更好地控制和管理其依…

【力扣】Z 字形变换,模拟 + 直接构造

Z 字形变换原题地址 方法一&#xff1a;利用二维矩阵模拟 对于特殊情况&#xff0c;Z 字形变换后只有一行或只有一列&#xff0c;则变换后的字符串和原字符串相同。 对于一般情况&#xff0c;我们可以考虑按照题目要求&#xff0c;把字符串按照 Z 字形存储到二维数组中&…

做抖店想要快速起店怎么办?产品和流量是关键!新手可收藏!

大家好&#xff0c;我是电商小布。 在抖音小店开通完成后&#xff0c;大家考虑的第一件事情&#xff0c;一定是小店如何能够快速出单&#xff0c;成功起店。 店铺出单的重点&#xff0c;其实就在小店的运营上。 那么这么多的环节&#xff0c;关键点在哪呢&#xff1f; 答案…

大学生多媒体课程学习网站thinkphp+vue

开发语言&#xff1a;php 后端框架&#xff1a;Thinkphp 前端框架&#xff1a;vue.js 服务器&#xff1a;apache 数据库&#xff1a;mysql 运行环境:phpstudy/wamp/xammp等开发背景 &#xff08;一&#xff09; 研究课程的提出 &#xff08;二&#xff09;学习网站的分类与界定…

前端页面之间传输数据 localStorage

效果 发送方 接收方 localStorage 的使用 // 保存数据 localStorage.setItem(key, value); // 获取数据 localStorage.getItem(key);发送方 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>登录<…

【深蓝学院】移动机器人运动规划--第6章 模型预测控制(MPC)与运动规划--笔记

0. Outline 1. Reactive Control&#xff08;反应式控制&#xff09; 控制学中的 “Reactive Control” 通常指的是一种控制策略&#xff0c;它依赖于系统对特定事件或变化的即时反应&#xff0c;而不是按照预定的计划或策略行动。这种控制往往是基于当前的传感器输入来做出决…

c编译器学习07:minilisp编译器改造(debug模式支持调试)

问题 原版的minilisp编译器不支持argv输入测试&#xff0c;不方便单步调试。 代码改造目标是既不改变原有程序的各种功能&#xff0c; 又能支持个人习惯的vs单步debug模式。 CMakeLists.txt变更 定义DEBUG宏 解决单步调试源码定位偏差问题 cmake_minimum_required(VERSION …

【Android安全】Windows 环境下载 Android 源码

准备环境 安装 git 安装 Python 硬盘剩余容量最好大于 100G 打开 Git Bash&#xff0c;用 git 克隆源代码仓库 git clone https://android.googlesource.com/platform/manifest.git //没有梯子使用清华源 git clone https://aosp.tuna.tsinghua.edu.cn/platform/manifest.git…

RabbitMQ 部署方式选择

部署模式 RabbitMQ支持多种部署模式&#xff0c;可以根据应用的需求和规模选择适合的模式。以下是一些常见的RabbitMQ部署模式&#xff1a; 单节点模式&#xff1a; 最简单的部署方式&#xff0c;所有的RabbitMQ组件&#xff08;消息存储、交换机、队列等&#xff09;都运行在…

TensorRT及CUDA自学笔记003 NVCC及其命令行参数

TensorRT及CUDA自学笔记003 NVCC及其命令行参数 各位大佬&#xff0c;这是我的自学笔记&#xff0c;如有错误请指正&#xff0c;也欢迎在评论区学习交流&#xff0c;谢谢&#xff01; NVCC是一种编译器&#xff0c;基于一些命令行参数可以将使用PTX或C语言编写的代码编译成可…