音频解码"/>
Android 多媒体之 Silk 格式音频解码
1 编译 Silk 源码
1.1 下载源码
由于官方的网站已经无法访问,可以到这里下载github/zly394/Silk…
下载后解压,目录结构如下:
根据不同的 CPU 分了不同文件夹,我这里使用的是 SILK_SDK_SRC_ARM_v1.0.9。
1.2 编写编译脚本
省略 ndk 环境配置过程
进入 SILK_SDK_SRC_ARM_v1.0.9 目录
在该目录下创建配置脚本:
build.sh
# ndk 目录根据你的安装目录
ANDROID_NDK=/Users/zhuleiyue/Library/Android/sdk/ndk-bundle
# 指定 CPU 架构
CPU=armeabi-v7a# 最低支持的 Android 版本
ANDROID_API=android-18
# CPU 架构
ARCH=arch-arm
# 工具链版本
TOOLCHAIN_VERSION=4.9
# 指定工具链 CPU 架构
TOOLCHAIN_CPU=arm-linux-androideabi
# 指定编译工具 CPU 架构
CROSS_CPU=arm-linux-androideabi
# 优化参数
ADDED_CFLAGS="-fpic -pipe "case $CPU in
armeabi-v7a)ARCH=arch-armTOOLCHAIN_CPU=arm-linux-androideabiCROSS_CPU=arm-linux-androideabiTARGET_ARCH=armv7-aADDED_CFLAGS+="-DNO_ASM";;
arm64-v8a)ARCH=arch-arm64ANDROID_API=android-21TOOLCHAIN_CPU=aarch64-linux-androidCROSS_CPU=aarch64-linux-androidTARGET_ARCH=armv8-aADDED_CFLAGS+="-D__ARMEL__";;
*)echo "不支持的架构 $CPU";exit 1;;
esac# 设置编译针对的平台
# 最低支持的 android 版本,CPU 架构
SYSROOT=$ANDROID_NDK/platforms/$ANDROID_API/$ARCH
# 设置编译工具前缀
export TOOLCHAIN_PREFIX=$ANDROID_NDK/toolchains/$TOOLCHAIN_CPU-$TOOLCHAIN_VERSION/prebuilt/darwin-x86_64/bin/$CROSS_CPU-
# 设置编译工具后缀
export TOOLCHAIN_SUFFIX=" --sysroot=$SYSROOT"
# 设置 CPU 架构
export TARGET_ARCH
# 设置优化参数
export ADDED_CFLAGSmake clean all复制代码
对于 armeabi-v7a 的 CPU 架构需要设置 NO_ASM 来禁用 asm,对于 arm64-v8a 架构,需要设置 ARMEL 支持 big endian。
1.3 编译
给 build.sh 赋予可执行权限:
chmod +x build.sh复制代码
然后运行编译脚本进行编译:
./build.sh复制代码
编译完成后会在当前目录生成静态库 libSKP_SILK_SDK.a。
2 引入到 Android 项目
2.1 添加静态库和头文件
创建支持 C/C++ 的项目
在 app 的 build.gradle 文件中 defaultConfig 标签下添加如下配置:
更多推荐
Android 多媒体之 Silk 格式音频解码
发布评论