Android 多媒体之 Silk 格式音频解码

1 编译 Silk 源码

1.1 下载源码

由于官方的网站已经无法访问,可以到这里下载github.com/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-arm
    TOOLCHAIN_CPU=arm-linux-androideabi
    CROSS_CPU=arm-linux-androideabi
    TARGET_ARCH=armv7-a
    ADDED_CFLAGS+="-DNO_ASM"
    ;;
arm64-v8a)
    ARCH=arch-arm64
    ANDROID_API=android-21
    TOOLCHAIN_CPU=aarch64-linux-android
    CROSS_CPU=aarch64-linux-android
    TARGET_ARCH=armv8-a
    ADDED_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_CFLAGS

make 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 标签下添加如下配置:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值