翼度科技»论坛 编程开发 python 查看内容

FreeSWITCH添加g729编码及pcap音频提取

8

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
操作系统 : debian 11 (bullseye,docker)、Windows10_x64FreeSWITCH版本 :1.10.9Docker版本:23.0.6Python 版本  :  3.9.2 日常工作中,有时候会遇到g729编码的相关内容,但FreeSWITCH默认是不支持g729编码转码的,今天记录下使用开源的 bcg729 进行g729转码的过程(本文仅作技术研究,商业使用请购买商业版本),以及如何从g729格式的pcap数据中提取音频文件。本文基于docker打包的debian 11环境,构建base包的过程可以参考我之前的文章:https://www.cnblogs.com/MikeZhang/p/dockerPackFs20230617.html 一、添加g729编码及开启转码

1、获取bcg729源码

GitHub地址:https://github.com/xadhoom/mod_bcg729

 下载命令:
  1. wget https://github.com/xadhoom/mod_bcg729/archive/refs/tags/v1.0.5.tar.gz
复制代码
2、编译及安装bcg729编码

1)启动编译环境:
  1. docker run --name fs --network host -t -d fs:base /bin/bash
复制代码

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

 编译及安装过程:
  1. docker cp mod_bcg729_all fs:/root/
  2. docker exec -it fs bash
  3. cd /root/mod_bcg729_all/
  4. make && make install
复制代码
可从如下渠道获取:关注微信公众号(聊聊博文,文末可扫码)后回复 20230722 获取。3、加载bcg729编码

文件:conf/autoload_configs/modules.conf.xml
修改内容:
  1. [/code]控制台查看编码:
  2. show codec
  3. [align=center][/align]
  4. [size=4][b]4、开启bcg729转码[/b][/size]
  5. 文件:conf/vars.xml
  6. 修改或添加内容:
  7. [code]
复制代码
文件:
  1. sip_profiles/internal.xml<br>sip_profiles/external.xml
复制代码
修改或添加内容:
  1. [/code][size=4][b]5、其它[/b][/size]
  2. 如果测试过程中遇到30秒挂机的情况,设置下rtp地址为内网:
  3. [code]
复制代码
二、从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示例代码:

完整示例代码可以从如下途径获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20230722 获取。三、运行效果

 1、bcg729转码运行效果

1000分机:仅支持g729编码
1001分机:仅支持PCMA编码

 转码效果:

 g729转码运行效果视频可以从如下途径获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 2023072201 获取。2、pcap音频提取效果

wireshark提取效果:

 python提取效果:

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

本文涉及源码和文件,可以从如下途径获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20230722 获取。

 

来源:https://www.cnblogs.com/MikeZhang/p/fsG729Relate20230722.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具