opencore-amr移植和使用(PCM转AMR-NB)

介绍:

    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'

接下来直接编译即可。

你可能感兴趣的:(物联网)