因为Android录音不支持MP3,所以要用到音频转码。lame是一个比较有名的开源音频库 是用C语言写的。使用AndroidStudio编译步骤如下:
1.第一步搭建NDK开发环境Android studio配置里 Android SDK 选项下的。 SDK Tools 选择LLB NDK CMake 3个并下载
2.第二步创建一个NDK工程,这里要提一下新版的Android studio 是把支持C++单独提出来作为一个项目类型了
3.下载Lame源码https://lame.sourceforge.io这里使用lame 3.100最新版本
在项目cpp目录新建文件夹lamemp3,把解压后文件夹libmp3lame里的除i386和vector文件夹里全部.h、.c结尾的文件和include/lame.h复制到cpp/lamemp3里面
修改lame部分源码
(1)注释掉或者删掉ffc.c文件里的include "vector/lame_intrin.h"
(2)注释掉set_get.h的第24行 #include <lame.h>
(3)修改 util.h 文件的 570 行的 extern ieee754_float32_t fast_log2(ieee754_float32_t x) 为 extern float fast_log2(float x)
4.配置Gradle文件
追加 cppFlags "-frtti -fexceptions" cFlags "-DSTDC_HEADERS" 2项
5.配置CMakeLists.txt文件内容如下
把 CMakeLists.txt放到app目录下如下图
cmake_minimum_required(VERSION 3.4.1)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/jniLibs/${ANDROID_ABI})
#设置变量SRC_DIR为lamemp3的所在路径
set(SRC_DIR src/main/cpp/lamemp3)
#指定头文件所在,可以多次调用,指定多个路径
include_directories(src/main/cpp/lamemp3)
#设定一个目录
aux_source_directory(src/main/cpp/lamemp3 SRC_LIST)
add_library(
lamemp3
SHARED
${SRC_LIST}) #src/main/cpp/native-lib.cpp
find_library(
log-lib
log)
target_link_libraries(
lamemp3
${log-lib})
6.直接build项目会在配置的jniLibs目录下生成动态so库文件
参考 : https://www.jianshu.com/p/a9f5996cfd5d
https://www.jianshu.com/p/f09dbaf72126
https://www.2cto.com/kf/201804/735129.html