最近项目中使用到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”

本地实测编译通过,可正常使用(只测试了静态库,动态库自行测试)。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐