没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
前言 最近做一个即时通信类的项目,由于要保证pc端,iOS端和Android端的通用性,最终统一为MP3格式,一直担心MP3格式会不会很大,但是实测还是可以接受的。下面来看看具体步骤: 工具 MP3格式是用一个开源项目转的,MP3lame,由于该项目用到了jni,所以需要大家配置好ndk环境,环境配置在此就不多说了,大家可以自行百度,最新的应该很好配置。 创建jni 拷贝文件 下载好后(我下载的是3.98.4版本)打开,找到libmp3lame文件,将里面的.h和.c拷贝下来,在自己的工程里创建jni文件夹,在jni文件夹下新建一个文件夹(我的命名为lame-3.98.4_libmp3lame
资源推荐
资源详情
资源评论




























Android录制录制mp3格式文件格式文件
前言前言
最近做一个即时通信类的项目,由于要保证pc端,iOS端和Android端的通用性,最终统一为MP3格式,一直担心MP3格式会
不会很大,但是实测还是可以接受的。下面来看看具体步骤:
工具工具
MP3格式是用一个开源项目转的,MP3lame,由于该项目用到了jni,所以需要大家配置好ndk环境,环境配置在此就不多说
了,大家可以自行百度,最新的应该很好配置。
创建创建jni
拷贝文件拷贝文件
下载好后(我下载的是3.98.4版本)打开,找到libmp3lame文件,将里面的.h和.c拷贝下来,在自己的工程里创建jni文件夹,
在jni文件夹下新建一个文件夹(我的命名为lame-3.98.4_libmp3lame,后面会用到),将刚才拷贝的文件复制进去,然后再把
include文件夹里的lame.h也拷贝进去。
创建创建Android.mk
在jni中创建文件,Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LAME_LIBMP3_DIR := lame-3.98.4_libmp3lame
LOCAL_MODULE := 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 com_maxi_mp3record_MP3Recorder.c
include $(BUILD_SHARED_LIBRARY)
**注意:**LAME_LIBMP3_DIR := lame-3.98.4_libmp3lame 需要将其改为你的项目中的文件名,即上面说的jni下新建的文件
夹。
大家应该看到了最后一句的com_maxi_mp3record_MP3Recorder.c
很明显这是我自己创建的.c文件。用来调用mp3lame中的接口的,对应着我java中的
com.maxi.mp3record.MP3Recorder.java。咱们先创建java文件。
创建创建MP3Recorder.java
对应你的包名建一个MP3Recorder.java文件,该文件是java文件对应你的包名建立即可。
package cn.ctvonline.android.modules.project.widget;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.os.Handler;
/**
* <b>类功能描述:</b><div style="margin-left:40px;margin-top:-10px">
* MP3实时录制功能,可暂停,注意因踩用Native开发,不能混淆
*/
public class MP3Recorder {
private String filePath;

private int sampleRate;
private boolean isRecording = false;
private boolean isPause = false;
private Handler handler;
/**
* 开始录音
*/
public static final int MSG_REC_STARTED = 1;
/**
* 结束录音
*/
public static final int MSG_REC_STOPPED = 2;
/**
* 暂停录音
*/
public static final int MSG_REC_PAUSE = 3;
/**
* 继续录音
*/
public static final int MSG_REC_RESTORE = 4;
/**
* 缓冲区挂了,采样率手机不支持
*/
public static final int MSG_ERROR_GET_MIN_BUFFERSIZE = -1;
/**
* 创建文件时扑街了
*/
public static final int MSG_ERROR_CREATE_FILE = -2;
/**
* 初始化录音器时扑街了
*/
public static final int MSG_ERROR_REC_START = -3;
/**
* 录紧音的时候出错
*/
public static final int MSG_ERROR_AUDIO_RECORD = -4;
/**
* 编码时挂了
*/
public static final int MSG_ERROR_AUDIO_ENCODE = -5;
/**
* 写文件时挂了
*/
public static final int MSG_ERROR_WRITE_FILE = -6;
/**
* 没法关闭文件流
*/
public static final int MSG_ERROR_CLOSE_FILE = -7;
public MP3Recorder(int sampleRate) {
this.sampleRate = sampleRate;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
/**
* 开片
*/
剩余8页未读,继续阅读
资源评论


weixin_38545463
- 粉丝: 6
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基因工程与基因重组.ppt
- 企业营销型网站建设方案.doc
- 功和机械能-一、知识网络-二、重难点归纳-1、功:物体做了功的两个要素.doc
- 计算机专业职业生涯规划书样稿.doc
- 大连高新区管委会网络运行维护服务采购项目.doc
- 网络管理第1章.ppt
- 卫生信息化建设指导建议建议意见和发展规划.pptx
- 工程项目管理第二章PPT课件.ppt
- 软件项目需求说明书模板.doc
- 网络中心意识形态总结-党建工作总结.docx
- 新编c盘清理缓存提高电脑性能措施.doc
- 我国网络外卖新规是什么?.doc
- 商场无线网络解决方案资料.doc
- 网络经济发展及策略.doc
- 正确认识网络健康使用网络.ppt
- 移动应用开发(iOS平台)专业实验室建设方案.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
