最近项目中使用到opus音频库,这是一款开源的高效的音频库。其优点相对于AAC编码来说,编码效率高,据说相同带宽下,音频质量完爆AAC,而高带宽下音质接近原始音频(不喜勿喷^_^)。详情及源码见官网
http://www.opus-codec.org/
源码可以直接编译x86平台的库,想要编译ARM平台下,需一番配置。
首先配置交叉编译工具,交叉编译工具链网上有一大堆,Google官网也有官方的,请自行下载。
sh ~/sdk/android-ndk-r14b/build/tools/make-standalone-toolchain.sh
--platform=android-19 --install-dir=/tmp/my_toolchain
请注意第一行后面的连接符,platform默认使用android-19,可根据实际情况自行修改。
创建一个env.opus文件,内容如下:
#!/bin/sh
export PATH=/tmp/my_toolchain/bin:$PATH
export CC=arm-linux-androideabi-gcc
export CXX=arm-linux-androideabi-g++
./configure --host=arm-linux --enable-fixed-point --disable-float-api
CFLAGS="-O3 -mfpu=neon -mfloat-abi=softfp" HAVE_ARM_NEON_INTR=1
为了提高库的运行效率,分别做了如下优化:启用定点数运算,禁用浮点数运算,O3优化,neon优化,使用软浮点库进行浮点运算。
PS: 从Opus提供的编译脚本来看,要彻底开启neon以后,还需要添加“HAVE_ARM_NEON_INTR=1”
本地实测编译通过,可正常使用(只测试了静态库,动态库自行测试)。