FreeSWITCH添加g729编码及pcap音频提取
一、添加g729编码及开启转码
1、获取bcg729源码
GitHub地址:https://github.com/xadhoom/mod_bcg729

下载命令:
wget https://github.com/xadhoom/mod_bcg729/archive/refs/tags/v1.0.5.tar.gz
2、编译及安装bcg729编码
1)启动编译环境:
docker run --name fs --network host -t -d fs:base /bin/bash

说明:该环境已经安装freeswitch 1.10.9,具体编译过程可参考我在文章开头给出的参考信息。
2)复制及解压文件
docker cp bcg729_v1.0.5.tar.gz fs:/usr/src
docker exec -it fs bash
cd /usr/src/
tar zxf bcg729_v1.0.5.tar.gz
3)编译及安装
编译过程会从这里下代码:
git clone https://github.com/BelledonneCommunications/bcg729.git
需要安装git
apt install git
编译及安装:
make && make install
也可在宿主机系统下载后复制到docker容器,如果下载过慢,可直接使用我下载及编译好的文件:

编译及安装过程:
docker cp mod_bcg729_all fs:/root/
docker exec -it fs bash
cd /root/mod_bcg729_all/
make && make install
3、加载bcg729编码
文件:conf/autoload_configs/modules.conf.xml
修改内容:
<!--load module="mod_g729"/-->
<load module="mod_bcg729"/>
控制台查看编码:
show codec

4、开启bcg729转码
文件:conf/vars.xml
修改或添加内容:
<X-PRE-PROCESS cmd="set" data="global_codec_prefs=OPUS,G722,PCMU,PCMA,G729,H264,VP8"/>
<X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=OPUS,G722,PCMU,PCMA,G729,H264,VP8"/>
<X-PRE-PROCESS cmd="set"data="media_mix_inbound_outbound_codecs=true"/>
文件:
sip_profiles/internal.xml
sip_profiles/external.xml
修改或添加内容:
<param name="inbound-late-negotiation" value="false"/>
<param name="disable-transcoding" value="false"/>
5、其它
如果测试过程中遇到30秒挂机的情况,设置下rtp地址为内网:
<X-PRE-PROCESS cmd="set" data="external_rtp_ip=192.168.137.33"/>
<X-PRE-PROCESS cmd="set" data="external_sip_ip=192.168.137.33"/>
二、从pcap提取音频文件
提取过程和提取pcma格式音频类似,相关工具可从这篇文章提供的渠道获取:
https://www.cnblogs.com/MikeZhang/p/20230326-pcapToWav.html
这里简单描述下区别。
1、Windows 10环境使用wireshark提取rtp音频
https://wiki.wireshark.org/HowToDecodeG729
使用wireshak 2.6.0以后的版本支持解析g729格式。

解析效果如下:

导出wav文件:

在弹出的界面输入文件路径即可。
2、Windows 10环境使用python提取rtp音频
使用python导出rtp音频大概分为以下两个步骤:
1)使用libpcap从pcap文件中提取raw格式的音频;
libpcap的使用可以参考这篇文章:
https://www.cnblogs.com/MikeZhang/p/pythonUseLibpcap20221029.html
2)使用ffmpeg将raw格式转换成需要的格式(比如mp3)
可从ffmpeg官方网站下载,也可从文末提供的资源地址获取。
python示例代码:

完整示例代码可以从如下途径获取:
三、运行效果
1、bcg729转码运行效果
1000分机:仅支持g729编码
1001分机:仅支持PCMA编码

转码效果:

g729转码运行效果视频可以从如下途径获取:
2、pcap音频提取效果
wireshark提取效果:

python提取效果:

g729音频提取运行效果视频可以从如下途径获取:
四、资源下载
本文涉及源码和文件,可以从如下途径获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20230722 获取。

FreeSWITCH添加g729编码及pcap音频提取的更多相关文章
- FreeSWITCH添加iLBC编码及转码
操作系统 :CentOS 7.6_x64 FreeSWITCH版本 :1.10.9 一.安装ilbc库 从第三方库里下载指定版本: git clone https://freeswitch.org/s ...
- 痞子衡嵌入式:PCM编码与Waveform音频文件(.wav)格式详解
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是PCM编码及Waveform音频文件格式. 嵌入式里有时候也会和音频打交道,比如最近特别火的智能音箱产品,离不开前端的音频信号采集.降噪 ...
- Freeswitch 添加可转码的G729编码
默认情况下Freeswitch自带的G729模块是pass-through-并不支持转码. 不过我们依然有个好奇的心, 所以我们决定添加一个支持G729转码的模块到Freeswitch. 1. 下载m ...
- FFmpeg在JAVA中的使用-音频提取&字幕压缩
由于项目需求中涉及到视频中音频提取,以及字幕压缩的功能,一直在研究ffmpeg,仅仅两个功能,却深受ffmpeg的折磨. 今天谈谈ffmpeg在java中的简单使用,首先下载FFmpeg包,官方地址: ...
- ubuntu下Eclipse下添加GBK编码
把Windows下的工程导入到了Linux下Eclipse中,由于以前的工程代码,都是GBK编码的(Windows下的Eclipse 默认会去读取系统的编码,所以Widnwos下的Eclipse的编码 ...
- Pazera Free Audio Extractor 中文版 - 轻松将视频背景音乐/对话音频提取出来的免费软件
这个软件是用来提取视频中的音频的,方便快捷.但是有一个问题,就是如果我提取的视频的名字中有不支持的字符(比如泰文)的时候,那么这个就提取不出来.所以如果名字中有不支持的字符的时候就要先改一个名字,然后 ...
- FreeSWITCH添加中文语音
1.准备中文语音包 可以到freeswitch官网下载,也可以自己录制 2.中文资源的安装路径: 英文资源的路径为conf/sounds/en/us/callie/... 类似的设置中文资源的路径 ...
- FreeSWITCH增加iLBC编码
1. 安装ilbc库从第三方库里下载指定版本 git clone https://freeswitch.org/stash/scm/sd/libilbc.git ./bootstrap.sh ./co ...
- One-hot 编码/TF-IDF 值来提取特征,LAD/梯度下降法(Gradient Descent),Sigmoid
1. 多值无序类数据的特征提取: 多值无序类问题(One-hot 编码)把“耐克”编码为[0,1,0],其中“1”代表了“耐克”的中 间位置,而且是唯一标识.同理我们可以把“中国”标识为[1,0],把 ...
- 为Visual Studio添加一个“编码的UI测试生成器”的快捷方式
在添加CodedUI测试用例时,经常需要查看捕获控件的属性.按照常规的方式,只有在添加一个全新的CodedUI编码测试时才能查看捕获控件的属性,这样很不方便. 下面介绍在Visual Studio工具 ...
随机推荐
- spring-transaction源码分析(3)Transactional事务失效原因
问题概述 在Transactional方法中使用this方式调用另一个Transactional方法时,拦截器无法拦截到被调用方法,严重时会使事务失效. 类似以下代码: @Transactional ...
- 用C# WPF简单实现仪表控件
时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...
- 【C/C++】 开发必备知识总结
>from: C/C++ 开发必备知识总结 (qq.com) const 作用 修饰变量,说明该变量不可以被改变: 修饰指针,分为指向常量的指针和指针常量: 常量引用,经常用于形参类型,即避免了 ...
- http-自签证书
1. 背景 证书需要向云服务提供商购买,是需要付费,但用在应用开发场景是不合适的,需要开发者自己自签证书进行测试 2. 工具包 Cygwin a large collection of GNU and ...
- Blazor SSR/WASM IDS/OIDC 单点登录授权实例5 - Winform 端授权
目录: OpenID 与 OAuth2 基础知识 Blazor wasm Google 登录 Blazor wasm Gitee 码云登录 Blazor SSR/WASM IDS/OIDC 单点登录授 ...
- [转帖]《Linux性能优化实战》笔记(23)—— 内核线程 CPU 利用率过高,perf 与 火焰图
在排查网络问题时,我们还经常碰到的一个问题,就是内核线程的 CPU 使用率很高.比如,在高并发的场景中,内核线程 ksoftirqd 的 CPU 使用率通常就会比较高.回顾一下前面学过的 CPU 和网 ...
- [转帖]dd - Linux世界中的搬运工
<存储工具系列文章>主要介绍存储相关的测试和调试工具,包括不限于dd.fio.vdbench.iozone.iometer.cosbench等性能负载工具,及strace等调试工具. dd ...
- 验证功能访问Redis的次数和命令
背景 公司内部在进行性能调优, 调优有多个方法. 应用Redis方面主要的调优有: 1. 进行redis键值对大小的处理. 2. 进行redis键值对过期时间的处理. 3. 减少连接数,减少网络带宽. ...
- 测试环境Nginx反向代理负载均衡模板说明
公司里面为了验证 https 以及域名特点进行了相关的测试工作. 为了简单起见 将 安装文件执行了导出. 这样的话就比较简单了. 注意说明一点的是 我这边导出的工具都是 放到根目录下面 目录最简单. ...
- centos8上安装中文字符集
https://www.cnblogs.com/kaishirenshi/p/12669353.html yum install glibc-common yum install -y langpac ...