Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >FreeSWITCH如何集成AMR/AMR-WB编解码

FreeSWITCH如何集成AMR/AMR-WB编解码

作者头像
杜金房
发布于 2024-04-11 12:26:14
发布于 2024-04-11 12:26:14
47900
代码可运行
举报
运行总次数:0
代码可运行

FreeSWITCHAMRAMR-WB两种编码格式默认为passthough状态,若想对AMRAMR-WB进行编解码,需对mod_amrmod_amrwb两个模块重新编译。

本文介绍通过源码编译所需的opencore-amrov-amrwbenc两个依赖库。当然也可使用yum等工具直接安装libopencore-amrnb.solibopencore-armwb.solibvo-amrwbenc.so

* 本文内涉及的所有路径,均可根据实际情况进行更改,不局限于root用户。

- AMR编译 -

下载OpenCore AMR源码,网址:https://sourceforge.net/projects/opencore-amr/files/opencore-amr,推荐使用版本为0.1.3。如下图:

解压压缩包并进入源码根目录进行安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tar xzf opencore-amr-0.1.3.tar.gz
cd opencore-amr-0.1.3/
./configure --prefix=/root/libs
make && make install

- AMR-WB编译 -

若只需AMR编码格式,可直接跳过此步骤。

OpenCore AMR源码压缩包包含了AMR-NB编码和解码,但是AMR-WB只支持编码,所以我们需要增加AMR-WB解码能力。

下载vo-amrwbenc压缩包,网址:https://sourceforge.net/projects/opencore-amr/files/vo-amrwbenc,推荐版本为0.1.3,如下图:

解压压缩包并进入源码根目录进行安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tar xzf vo-amrwbenc-0.1.3.tar.gz
cd vo-amrwbenc-0.1.3/
./configure --prefix=/root/libs
make && make install

至此,依赖库编译完成,opencore-amrov-amrwbenc均安装在了/root/libs文件夹下,目录树如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.
├── include
│   ├── opencore-amrnb
│   │   ├── interf_dec.h
│   │   └── interf_enc.h
│   ├── opencore-amrwb
│   │   ├── dec_if.h
│   │   └── if_rom.h
│   └── vo-amrwbenc
│       └── enc_if.h
└── lib
    ├── libopencore-amrnb.a
    ├── libopencore-amrnb.la
    ├── libopencore-amrnb.so -> libopencore-amrnb.so.0.0.3
    ├── libopencore-amrnb.so.0 -> libopencore-amrnb.so.0.0.3
    ├── libopencore-amrnb.so.0.0.3
    ├── libopencore-amrwb.a
    ├── libopencore-amrwb.la
    ├── libopencore-amrwb.so -> libopencore-amrwb.so.0.0.3
    ├── libopencore-amrwb.so.0 -> libopencore-amrwb.so.0.0.3
    ├── libopencore-amrwb.so.0.0.3
    ├── libvo-amrwbenc.a
    ├── libvo-amrwbenc.la
    ├── libvo-amrwbenc.so -> libvo-amrwbenc.so.0.0.4
    ├── libvo-amrwbenc.so.0 -> libvo-amrwbenc.so.0.0.4
    ├── libvo-amrwbenc.so.0.0.4
    └── pkgconfig
        ├── opencore-amrnb.pc
        ├── opencore-amrwb.pc
        └── vo-amrwbenc.pc

- 添加环境变量 -

由于opencore-amrvo-amrwbenc安装路径为我们自定义路径(推荐将两个库安装在同一路径,路径配置在configure时通过--prefix指定,本次安装均为/root/libs),需配置环境变量告知FreeSWITCH依赖库位置。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim ~/.bash_profile
新增下面一行:
export PKG_CONFIG_PATH=/root/libs/lib/pkgconfig:$PKG_CONFIG_PATH
保存退出
source ~/.bash_profile

- 编译mod_amr -

至此,依赖库已经安装完成,可开始进行mod_amr模块的编译。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
进入FreeSWITCH源码目录,本次安装过程中为/root/freeswitch-1.8.5
cd /root/freeswitch-1.8.5
重新生成mod_amr模块的Makefile文件
./bootstrap.sh -j
./configure --prefix=/root/freeswitch-bin
cd src/mod/codecs/mod_amr
make
make install

至此mod_amr编译完成,fs_cli进入FreeSWITCH console前台,加载mod_amr模块,即可。

- 编译mod_amrwb -

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
进入FreeSWITCH源码目录,本次安装过程中为/root/freeswitch-1.8.5
cd /root/freeswitch-1.8.5
重新生成mod_amrwb模块的Makefile文件
./bootstrap.sh -j
./configure --prefix=/root/freeswitch-bin
cd src/mod/codecs/mod_amrwb
make
make install

至此mod_amrwb编译完成,fs_cli进入FreeSWITCH console前台,加载mod_amrwb模块,即可。

- 配置路由 -

  • 新增编码格式

由于FreeSWITCH默认编码格式内没有AMRAMR-WB,需要修改vars.xmlglobal_codec_prefsoutbound_codec_prefs两个配置项,用于新增编码格式。如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<X-PRE-PROCESS cmd="set" data="global_codec_prefs=OPUS,PCMU,PCMA,H264,AMR,AMR-WB"/>
<X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=OPUS,PCMU,PCMA,H264,AMR,AMR-WB"/>

修改完成后需要reloadxml生效。

  • 呼叫路由
  • AMR/AMR-WB转PCMA/PCMU
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<extension name="Local_Extension">
<condition field="destination_number" expression="^(10[01][0-9])$">
<action application="bridge" data="{absolute_codec_string='PCMA\,PCMU'}user/$1"/>
</condition>
</extension>
  • PCMA/PCMU转AMR/AMR-WB
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<extension name="Local_Extension">
<condition field="destination_number" expression="^(10[01][0-9])$">
<action application="bridge" data="{absolute_codec_string='AMR\,AMR-WB'}user/$1"/>
</condition>
</extension>

至此,您可以愉快的使用FreeSWITCHAMR/AMR-WB进行编解码了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeSWITCH中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
FFmpeg开发笔记(十一)Windows环境给FFmpeg集成vorbis和amr
​FFmpeg内置了aac音频格式,在《FFmpeg开发实战:从零基础到短视频上线》一书的“5.2.2 Linux环境集成mp3lame”又介绍了如何给FFmpeg集成mp3格式,常见的音频文件除了这两种之外,还有ogg和amr两种格式也较常用。其中ogg格式的编解码依赖于libogg和libvorbis,而amr格式的编解码依赖于opencore-amr。前文介绍了在Linux环境给FFmpeg集成vorbis和amr,接下来介绍如何在Windows环境给FFmpeg集成vorbis和amr。
aqi00
2024/03/30
3070
FFmpeg开发笔记(十一)Windows环境给FFmpeg集成vorbis和amr
FFmpeg开发笔记(十)Linux环境给FFmpeg集成vorbis和amr
​FFmpeg内置了aac音频格式,在《FFmpeg开发实战:从零基础到短视频上线》一书的“5.2.2 Linux环境集成mp3lame”又介绍了如何给FFmpeg集成mp3格式,常见的音频文件除了这两种之外,还有ogg和amr两种格式也较常用。其中ogg格式的编解码依赖于libogg和libvorbis,而amr格式的编解码依赖于opencore-amr。因此要先安装编译这三个库,再让FFmpeg开启ogg和amr支持,在Linux环境的操作过程包含四个步骤:安装libogg、安装libvorbis、安装opencore-amr、重新编译FFmpeg,分别说明如下。
aqi00
2024/03/24
3150
FFmpeg开发笔记(十)Linux环境给FFmpeg集成vorbis和amr
linux下使用ffmpeg将amr转成mp3
接到需求要在Linux环境下将amr转换为mp3,windows下直接使用第三方jar包封装的exe方法即可,但不支持Linux,上网爬完资料说是用ffmpeg加上amr插件可以实现,根据教程尝试了一下: 1. 首先安装系统编译环境  yum install -y automake autoconf libtool gcc gcc-c++  #CentOS 2. 编译所需源码包 #yasm:汇编器,新版本的ffmpeg增加了汇编代码 wget http://www.tortall.net/projects
joshua317
2018/04/16
2.9K0
PHP 将amr音频文件转换为mp3格式
2、使用ffmpeg -i 指令来转换amr为mp3格式(这个到时候写在PHP代码中,使用exec函数执行即可)
超级小可爱
2023/02/20
2.1K0
ffmpeg安装失败_linux离线安装ffmpeg
./configure –enable-static –enable-version3 –enable-gpl –enable-nonfree –enable-libfdk-aac –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-libvo-amrwbenc –enable-libilbc –enable-libvpx –enable-libx264 –enable-libopenjpeg –enable-pic –enable-libass –enable-libvpx –enable-libx265
全栈程序员站长
2022/10/02
6.7K0
ffmeg_facet的意思
由于底层识别使用的是pcm,因此推荐直接上传pcm文件。如果上传其它格式,会在服务器端转码成pcm,调用接口的耗时会增加。
全栈程序员站长
2022/11/09
1.9K0
【FFmpeg】ffmpeg 命令查询一 ( 版本 | 编译配置 | 复用格式 | 编解码器 )
【FFmpeg】FFmpeg 相关术语简介 【FFmpeg】FFmpeg 相关术语简介 二 【FFmpeg】FFmpeg 帮助文档使用
韩曙亮
2023/03/29
4.2K0
【FFmpeg】ffmpeg 命令查询一 ( 版本 | 编译配置 | 复用格式 | 编解码器 )
FreeSWITCH使用L16编码通信及raw数据提取
PCM(Pulse Code Modulation,脉冲编码调制)音频数据是未经压缩的音频采样数据,它是由模拟信号经过采样、量化、编码转换成的标准数字音频数据。
麦壳儿
2023/05/26
1.1K1
基于Freeswitch的语音视频通话
之前写过一篇《阿里云 opensips nat内网穿透》,当时是为了解决对讲机视频对讲的问题。但是之前的方案存在一个问题,那就是虽然服务器能够正常提供服务。但是在接通之后如果设备不在同一个局域网内就会导致有音频但是没有视频信息。这个问题困扰了很久,直到现在算是能够解决这个问题。出现上面这个问题的根本原因在于设备的网络层次关系太过复杂,视频信息没有办法透传。我不是语音视频方面的专家,集中nat结构我也不在叙述了,感兴趣的访问这个链接:https://www.cnblogs.com/zhumengke/articles/11204924.html
obaby
2023/02/22
4.5K0
FFmpeg常用命令行讲解及实战一
上图红框内为编译选项,编译选项支持编解码的格式、封装的格式及网络协议等等第三方包。其中比较常用的:
Gnep@97
2023/11/21
1.7K0
FFmpeg常用命令行讲解及实战一
FFMPEG 配置选项详细说明
使用以下任何一个开关将允许FFmpeg链接到 相应的外部库。所有组件都依赖于该库 如果所有其他依赖项都得到满足而未满足,则将启用 明确禁用。例如。 –enable-libwavpack将启用链接 libwavpack并允许构建libwavpack编码器,除非它是 使用–disable-encoder = libwavpack专门禁用。
程序手艺人
2019/02/21
5.3K0
【FFmpeg】ffmpeg 命令行参数 ② ( Windows 环境中 ffmpeg 命令行输出文本搜索 -findstr 用法 | -findstr 搜索文本字符串用法 | 输出命令行到文件中 )
在 Windows 命令行中 , 执行 ffmpeg 命令 , 有可能 在命令行中输出大量信息 ;
韩曙亮
2024/02/23
4730
【FFmpeg】ffmpeg 命令行参数 ② ( Windows 环境中 ffmpeg 命令行输出文本搜索 -findstr 用法 | -findstr 搜索文本字符串用法 | 输出命令行到文件中 )
FFmpeg常用操作
ffmpeg是一个源于Linux的工具软件,是FLV视频转换器,可以轻易地实现FLV向其它格式avi、asf、 mpeg的转换或者将其它格式转换为flv。
码客说
2019/10/21
3.4K0
FFmpeg开发笔记(二十一)Windows环境给FFmpeg集成AVS3解码器
​AVS3是中国AVS工作组制定的第三代音视频编解码技术标准,也是全球首个已推出的面向8K及5G产业应用的视频编码标准。AVS工作组于2019年3月9日完成第三代AVS视频标准(AVS3)基准档次的制订工作,参考软件的测试表明,AVS3基准档次的性能比上一代标准AVS2和HEVC提升了约30%。
aqi00
2024/05/05
2830
FFmpeg开发笔记(二十一)Windows环境给FFmpeg集成AVS3解码器
FFmpeg开发笔记(二十四)Linux环境给FFmpeg集成AV1的编解码器
​AV1是一种新兴的免费视频编码标准,它由开放媒体联盟(Alliance for Open Media,简称AOM)于2018年制定,融合了Google VP10、Mozilla Daala以及Cisco Thor三款开源项目的成果。据说在实际测试中,AV1标准比H.265(HEVC)的压缩率提升了大约27%。由于AV1具有性能优势,并且还是免费授权,因此各大流媒体平台更倾向使用AV1而非HEVC标准。
aqi00
2024/05/27
4710
FFmpeg开发笔记(二十四)Linux环境给FFmpeg集成AV1的编解码器
ClueCon2022在芝加哥举行及FreeSWITCH1.10.8发布
在又一届新的ClueCon召开之际,FreeSWITCH 1.10.8发布了。本次发布主要包含一些重要的Bug修复补丁,同时也提高了FreeSWITCH自身的稳定性,推荐更新。
杜金房
2022/12/12
7190
FFmpeg开发笔记(三十五)Windows环境给FFmpeg集成libsrt
​《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2  FFmpeg推流和拉流”提到直播行业存在RTSP和RTMP两种常见的流媒体协议。除此以外,还有比较两种比较新的流媒体协议,分别是SRT和RIST。
aqi00
2024/07/06
2200
FFmpeg开发笔记(三十五)Windows环境给FFmpeg集成libsrt
FFmpeg深入学习
上文主要讲解了 FFmpeg 相关知识,以及在 Windows 下编译 FFmpeg 源码,本文继续对 FFmpeg 进行更深入的介绍。
Gnep@97
2023/09/15
7010
FFmpeg深入学习
详解音频编解码的原理、演进和应用选型等
本文来自网易云音乐音视频实验室负责人刘华平在LiveVideoStackCon 2017大会上的分享,并由LiveVideoStack根据演讲内容整理而成(本次演讲PPT文稿,请从文末附件下载)。
JackJiang
2019/01/18
3.7K0
音视频开发常用工具
我们在进行音视频开发过程中不可避免的需要使用一些工具进行协助开发,本文重点讲解音视频开发过程中常用工具以及常用功能。
Gnep@97
2023/09/03
1.1K0
音视频开发常用工具
推荐阅读
相关推荐
FFmpeg开发笔记(十一)Windows环境给FFmpeg集成vorbis和amr
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验