android录音raw格式转换,android录音格式raw转mp3
主要使用到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相关推荐
- android 录音的格式转换,Android仿微信录音功能(录音后的raw文件转mp3文件)
现在很多时候需要用到录音,然后如果我们的App是ios和android两端的话,就要考虑录音的文件在两端都能使用,这个时候就需要适配,两端的录音文件都要是mp3文件,这样才能保证两边都能播放. 针对这 ...
- android 录音amr格式转换,android – 以AMR文件格式录制音频
我想以AMR文件格式录制音频.我目前正在使用波纹管代码来录制音频: outputFile = Environment.getExternalStorageDirectory().getAbsolute ...
- android录音raw格式转换,android录音raw用lame转换成mp3
1.用android进行录音上传到服务器,录音往往有这几种: a. 用MediaRecorder进行录音,示例代码如下: MediaRecorder recorder = new MediaRecor ...
- android 英语时间格式转换,android 时间格式解析转换关键点
中文格式 "yyyy-MM-dd" SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd" ...
- 虚拟磁盘格式转换:vdi - raw - qcow2
文章目录 XBox 虚拟磁盘 vdi 格式转换为 raw 格式 KVM 虚拟磁盘 raw 格式转换 qcow2 格式 XBox 虚拟磁盘 vdi 格式转换为 raw 格式 命令: VBoxManage ...
- Android录音-SoundTouch移植到Android
Android录音-SoundTouch移植到Android 文章目录 Android录音-SoundTouch移植到Android 一.SoundTouch介绍 二.移植SoundTouch(And ...
- android录音app 视频,月入 2 万案例分享:Android 音视频格式转换 App
音视频格式转换 月收入¥2w 2013年开始 1个创始人, 1个员工 新加坡 音视频格式转换,只有安卓 请问你的背景是什么?最近在忙什么? 我叫 Sherry Yang, 是新加坡一名极客女生,在读大 ...
- android 录音的格式,Android录音mp3格式实例详解
Android录音支持的格式有amr.aac,但这两种音频格式在跨平台上表现并不好. MP3显然才是跨平台的最佳选择. 项目地址 实现思路概述 在分析代码前,我们需要明确几个问题 1. 如何最终生成M ...
- android 录音的格式,Android录制声音 录音输输出格式
Table 1. Core media format and codec support. Type Format / Codec Encoder Decoder Details Supported ...
最新文章
- 融云任杰:强互动,RTC 下一个“爆点”场景 | 拟合
- autofac文档:服务类型,名称和键
- 计算机视觉Computer Vision的尴尬---by林达华
- 计算机网络于20世纪60年代萌芽,计算机网络的发展经过哪几个阶段?
- package.json---入门说明
- 《Python Cookbook 3rd》笔记汇总
- struct数组初始化
- SpringCloud工作笔记032---SpringCloud异常(Euruka):Application run failed java.lang.NoSuchMethodError: org.
- vue.js高德地图实现热点图
- ArcGIS API for JavaScript实现分图层显示
- html打印word文档,HTML文件到WORD文档双面打印三步曲
- 昂达 v891 连接上adb 调试
- 评价类算法之AHP层次分析法
- ANSYS 有限元分析 加载/求解/输出
- Pytorch深度学习笔记(02)--损失函数、交叉熵、过拟合与欠拟合
- 挚爱身影渐隐。素绞无意世情狠
- openlayers中使用rBush(R树)来存放要素等信息,本文修改了一点其中的rbush源码中的demo,使用canvas画出了insert和delete操作(建立树和删除树中数据)
- Android软件开发之获取通讯录联系人信息
- C语言RSA实现对字符串加密,C语言实现RSA加解密算法
- 词干抽取java实现_LinkedIn文本分析平台:主题挖掘的四大技术步骤