> 文档中心 > Android 实现边录音边转MP3 附Demo下载地址

Android 实现边录音边转MP3 附Demo下载地址

使用lame库编译实时转码的MP3库

  • 一、下载lame
  • 二 创建 android 项目 Koolearn-MP3-Recorde
  • 三, 编辑 lame库中的utils.h,jni和set_get.h 文件
  • 四,编译工具类LameUtil
  • 五 在jni目录下创建 Android.mk文件
  • 六 生成so文件

LAME是目前最好的MP3编码引擎。LAME编码出来的MP3音色纯厚、空间宽广、低音清晰、细节表现良好,它独创的心理音响模型技术保证了CD音频还原的真实性,配合VBR和ABR参数,音质几乎可以媲美CD音频,但文件体积却非常小。对于一个免费引擎,LAME的优势不言而喻

一、下载lame

下载地址:https://sourceforge.net/projects/lame/files/lame/:

lame官方网站截图

二 创建 android 项目 Koolearn-MP3-Recorde

创建jni目录 并复制 lame-3.100 包下的libmp3lame 目录下的所有 .c和.h文件和 include目录下的lame.h

三, 编辑 lame库中的utils.h,jni和set_get.h 文件

根据我编译过程中遇到的错误提示,我们可以提前把下面文件修改一下
把 extern ieee754_float32_t fast_log2(ieee754_float32_t x); 替换为 extern float fast_log2(float x);还有一些错误都是类似的,可以根据编译的错误提示修改:一般都是把ieee754_float32_t –> float
把set_get.h文件中的#include 引用去掉。

四,编译工具类LameUtil

LameUtil类包含方法

1.init() 初始化lame
2.encode()编码方法
3.flush() 清空编码通道缓存
4.close() 添加MP3文件尾信息,释放转码器

编译LameUtil文件
javah -jni com.koolearn.mp3recorder.util.LameUtil

生成com_koolearn_mp3recorder_util_LameUtil.h文件。
在jni包下根据生成的.h文件创建.c文件
在.c文件中实现.h文件声明的方法(可参考lame文档)

五 在jni目录下创建 Android.mk文件

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LAME_LIBMP3_DIR := libmp3lame_3.100
LOCAL_MODULE := koo_mp3lame
LOCAL_SRC_FILES := $(LAME_LIBMP3_DIR)/bitstream.c $(LAME_LIBMP3_DIR)/fft.c $(LAME_LIBMP3_DIR)/id3tag.c $(LAME_LIBMP3_DIR)/mpglib_interface.c $(LAME_LIBMP3_DIR)/presets.c $(LAME_LIBMP3_DIR)/quantize.c $(LAME_LIBMP3_DIR)/reservoir.c $(LAME_LIBMP3_DIR)/tables.c $(LAME_LIBMP3_DIR)/util.c $(LAME_LIBMP3_DIR)/VbrTag.c $(LAME_LIBMP3_DIR)/encoder.c $(LAME_LIBMP3_DIR)/gain_analysis.c $(LAME_LIBMP3_DIR)/lame.c $(LAME_LIBMP3_DIR)/newmdct.c $(LAME_LIBMP3_DIR)/psymodel.c $(LAME_LIBMP3_DIR)/quantize_pvt.c $(LAME_LIBMP3_DIR)/set_get.c $(LAME_LIBMP3_DIR)/takehiro.c $(LAME_LIBMP3_DIR)/vbrquantize.c $(LAME_LIBMP3_DIR)/version.c lame_util.c
include $(BUILD_SHARED_LIBRARY)

其中LOCAL_MODULE为要生成so库的名称
LOCAL_SRC_FILES为要使用的文件(包括刚才创建的.c文件以及.c文件中引用的文件)

六 生成so文件

在控制台(windows打开cmd.exe执行)进入main目录 执行ndk-build
可以生成lib和obj目录,lib目录中就是我们需要的so文件,obj删除

项目地址:https://github.com/nmyangmo/Android-Mp3-Record