介绍:
opencore-amr框架实现了AMR-NB语音格式的编解码和AMR-WB的解码。采用C语言实现,应用于各个系统,如Linux, MacOS X, Windows等。
由于笔者需要在嵌入式平台下将PCM原始数据编码为AMR,所以决定使用opencore-amr。
编译:
X86平台
1.首先下载源码并解压,源码下载地址:https://sourceforge.net/projects/opencore-amr/files/opencore-amr/。里面包含0.1.3到0.1.5版本。笔者使用的是0.1.3,使用tar命令解压:
tar -xvf opencore-amr-0.1.3.tar.gz
2.opencore-amr使用configure脚本配置不同的参数。如果是x86平台,只需要指定‘--prefix’参数即可,这个参数指定了完成编译后的头文件和库的位置,必须是绝对路径。
./configure --prefix='/home/chenzh/opencore-amr/x86'
如需了解其他参数,可以使用 ./configure --help 命令查看。
3.配置无误后,直接编译安装即可。
make && make install
4.完成后会在 /home/chenzh/opencore-amr/x86 目录下生成两个目录include和lib。使用可以参考:https://github.com/gansidui/pcm_amr_codec
嵌入式平台
嵌入式平台需要指定交叉编译器的位置,其他的跟X86平台下编译一样。在第二步中改为:
./configure --host=arm-none-eabi --prefix='/home/chenzh/opencore-amr/arm'
使用--host指定编译平台的前提是系统的环境变量中有此交叉编译器,使用 echo $PATH 命令查看:
如果有“configure: error: C++ compiler cannot create executables”的错误提示,并且config.log中的报错信息为 ‘exit.c:(.text.exit+0x2c): undefined reference to `_exit'’,该错误的原因可能是g++编译器的版本不匹配,解决办法为在configure前增加编译参数'--specs=nosys.specs'。
export OTHER_LINK_OPTIONS="--specs=nosys.specs"
LDFLAGS=$OTHER_LINK_OPTIONS ./configure --host=arm-none-eabi --prefix='/home/chenzh/opencore-amr/arm'
接下来直接编译即可。