主要使用到LAME 这个东东,需要用到jni;要装NDK ,要编译so库文件.要这个那个.. 麻烦的很....

果断各种google,然后找到个别人编译好的so和jar包,爽歪歪;

用非很简单:

FLameUtils mFLameUtils = new FLameUtils(1, sampleRateInHz, 96);

mFLameUtils.raw2mp3(lovaPath, path);

调他封装好的 工具类FLameUtils,然后传入对应的参数,相信用过AudioRecord 的都看得懂参数都是什么;这里说几个注意事项:

1.录音时, 读取数据记得用short[]类型,不然格式转换后会是噪音,short[] buffDate = new short[minBufferSizeInBytes];

2.导入工具类时记得要和他原来的包名一样,不然会调用不到本地jni方法;

3.格式转换记得丢在线程里,不然..你懂得;

4.格式转换完成后记得删掉原数据(raw原数据比较大,我记得录了12秒就1M 了... 我用的44100码率);

下面是我用的录音和格式转换代码:

/**

* 开始录音

*/

public void startRecord() {

if (mAudioRecord != null && !isRecording()) {

if (mAudioRecord.getState() == AudioRecord.STATE_INITIALIZED) {

LogUtil.i(TAG, "开始录音...");

new StartRecordThread().start();

isRecording = true;

} else {

LogUtil.e(TAG, "mAudioRecord=STATE_UNINITIALIZED");

}

}

}

/**

*

**************************************************************************

* @Version

* @ClassName: AudioRecordHelper.StartRecordThread

* @Description: 录音线程

* @Author fans

***************************************************************************

*/

class StartRecordThread extends Thread {

@Override

public void run() {

// TODO Auto-generated method stub

super.run();

mAudioRecord.startRecording();

writeDateToFile(lovaPath);

}

}

/**

* 写入原数据

*

* @param path

*/

private void writeDateToFile(String path) {

short[] buffDate = new short[minBufferSizeInBytes];

DataOutputStream dos = null;

int readSize = 0;

try {

File recordFile = new File(path);

if (recordFile.exists()) {

recordFile.delete();

recordFile.createNewFile();

}

dos = new DataOutputStream(new BufferedOutputStream(

new FileOutputStream(recordFile)));

while (isRecording()) {

readSize = mAudioRecord.read(buffDate, 0, minBufferSizeInBytes);

for (int i = 0; i < readSize; i++) {

dos.writeShort(buffDate[i]);

}

LogUtil.i(TAG, "录入音频大小:" + buffDate.length);

}

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

if (dos != null) {

try {

dos.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

/**

*

**************************************************************************

* @Version

* @ClassName: AudioRecordHelper.Raw2Mp3Thread

* @Description: 原数据转MP3

* @Author fans

***************************************************************************

*/

class Raw2Mp3Thread extends Thread {

String path;

public Raw2Mp3Thread(String path) {

this.path = path;

}

@Override

public void run() {

// TODO Auto-generated method stub

super.run();

String drPath = path.substring(0, path.lastIndexOf("/"));

LogUtil.i(TAG, "储存目录:" + drPath);

File file = new File(drPath);

if (!file.exists()) {

file.mkdirs();

}

LogUtil.i(TAG, "录音原始数据:" + lovaPath + ";MP3数据:" + path);

/* 原始raw文件转换成MP3 */

if (new File(lovaPath).length() < 1) {

LogUtil.e(TAG, "原始数据大小为0");

return;

}

File loveFile = new File(lovaPath);

LogUtil.i(TAG, "MP3格式转换开始...;文件大小=" + loveFile.length());

FLameUtils mFLameUtils = new FLameUtils(1, sampleRateInHz, 96);

mFLameUtils.raw2mp3(lovaPath, path);

LogUtil.i(TAG,

"转换完成:" + path + ";MP3文件大小=" + new File(path).length());

loveFile.delete();

CJApplication.getInstance().sendBroadcast(

new Intent(CJConstant.RECORD_FINISH_ACTION));

}

}

工具类和库文件下载地址:下载地址

android录音raw格式转换,android录音格式raw转mp3相关推荐

  1. android 录音的格式转换,Android仿微信录音功能(录音后的raw文件转mp3文件)

    现在很多时候需要用到录音,然后如果我们的App是ios和android两端的话,就要考虑录音的文件在两端都能使用,这个时候就需要适配,两端的录音文件都要是mp3文件,这样才能保证两边都能播放. 针对这 ...

  2. android 录音amr格式转换,android – 以AMR文件格式录制音频

    我想以AMR文件格式录制音频.我目前正在使用波纹管代码来录制音频: outputFile = Environment.getExternalStorageDirectory().getAbsolute ...

  3. android录音raw格式转换,android录音raw用lame转换成mp3

    1.用android进行录音上传到服务器,录音往往有这几种: a. 用MediaRecorder进行录音,示例代码如下: MediaRecorder recorder = new MediaRecor ...

  4. android 英语时间格式转换,android 时间格式解析转换关键点

    中文格式 "yyyy-MM-dd" SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd" ...

  5. 虚拟磁盘格式转换:vdi - raw - qcow2

    文章目录 XBox 虚拟磁盘 vdi 格式转换为 raw 格式 KVM 虚拟磁盘 raw 格式转换 qcow2 格式 XBox 虚拟磁盘 vdi 格式转换为 raw 格式 命令: VBoxManage ...

  6. Android录音-SoundTouch移植到Android

    Android录音-SoundTouch移植到Android 文章目录 Android录音-SoundTouch移植到Android 一.SoundTouch介绍 二.移植SoundTouch(And ...

  7. android录音app 视频,月入 2 万案例分享:Android 音视频格式转换 App

    音视频格式转换 月收入¥2w 2013年开始 1个创始人, 1个员工 新加坡 音视频格式转换,只有安卓 请问你的背景是什么?最近在忙什么? 我叫 Sherry Yang, 是新加坡一名极客女生,在读大 ...

  8. android 录音的格式,Android录音mp3格式实例详解

    Android录音支持的格式有amr.aac,但这两种音频格式在跨平台上表现并不好. MP3显然才是跨平台的最佳选择. 项目地址 实现思路概述 在分析代码前,我们需要明确几个问题 1. 如何最终生成M ...

  9. android 录音的格式,Android录制声音 录音输输出格式

    Table 1. Core media format and codec support. Type Format / Codec Encoder Decoder Details Supported ...

最新文章

  1. 融云任杰:强互动,RTC 下一个“爆点”场景 | 拟合
  2. autofac文档:服务类型,名称和键
  3. 计算机视觉Computer Vision的尴尬---by林达华
  4. 计算机网络于20世纪60年代萌芽,计算机网络的发展经过哪几个阶段?
  5. package.json---入门说明
  6. 《Python Cookbook 3rd》笔记汇总
  7. struct数组初始化
  8. SpringCloud工作笔记032---SpringCloud异常(Euruka):Application run failed java.lang.NoSuchMethodError: org.
  9. vue.js高德地图实现热点图
  10. ArcGIS API for JavaScript实现分图层显示
  11. html打印word文档,HTML文件到WORD文档双面打印三步曲
  12. 昂达 v891 连接上adb 调试
  13. 评价类算法之AHP层次分析法
  14. ANSYS 有限元分析 加载/求解/输出
  15. Pytorch深度学习笔记(02)--损失函数、交叉熵、过拟合与欠拟合
  16. 挚爱身影渐隐。素绞无意世情狠
  17. openlayers中使用rBush(R树)来存放要素等信息,本文修改了一点其中的rbush源码中的demo,使用canvas画出了insert和delete操作(建立树和删除树中数据)
  18. Android软件开发之获取通讯录联系人信息
  19. C语言RSA实现对字符串加密,C语言实现RSA加解密算法
  20. 词干抽取java实现_LinkedIn文本分析平台:主题挖掘的四大技术步骤

热门文章

  1. 高通SDX55平台:5G速率问题排查分析方法
  2. 携程--数据运营、数据分析
  3. sklearn随机森林模型参数解释
  4. 小米路由器部分机型刷原生Openwrt系统
  5. 左值、右值、右值引用、移动、引用坍缩和完美转发
  6. 解析人工智能对双师型课堂的辅助作用
  7. 微信页面嵌入canvas画图安卓会下拉的bug
  8. 如何做医疗带货直播?掌握这三点诀窍很关键
  9. 怎么能把文字转语音?我来教你几个方法
  10. 浙里办H5应用开发中的注意事项