MediaRecorder录制音频文件

时间:2022-05-08 19:46:10

MediaRecorder录制音频文件

使用手机麦克风硬件和Android系统MediaRecorder类实现。

步骤:

  1. 在activity_main文件上添加两个按钮,分别为开始按钮和停止按钮。
    MediaRecorder录制音频文件
 //获取按钮
record = (Button)findViewById(R.id.record);
stop =(Button)findViewById(R.id.stop);
record.setOnClickListener(this);
stop.setOnClickListener(this);

2.创建MeidaRecorder对象并实例化。

MediaRecorder mRecorder;
mRecorder
= new MediaRecorder();

3.创建音频文件

//创建音频文件
soundFile = new File(Environment.getExternalStorageDirectory().getCanonicalFile()+"/sound.mp3");

这里我将文件保存路径设为SD卡根目录下的sound.mp3文件

4.设置声音来源

//设置声音来源(麦克风)                   mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);

声音来源为手机麦克风

5.设置音频输出格式

//设置音频输出格式                  mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

6.设置编码模式

//设置编码模式                   mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);


7.设置保存文件路径

 mRecorder.setOutputFile(soundFile.getAbsolutePath());

8.准备录制

mRecorder.prepare();

9.开始录制

//录音开始
mRecorder.start();

10.停止录音并释放资源。

//停止录音
mRecorder.stop();
mRecorder.release();
mRecorder=null;

11.设置AndroidMannifest.xml配置文件

<uses-permission android:name="android.permission.RECORD_AUDIO" />

授予录音权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

授予写入路径权限

成果展示

MediaRecorder录制音频文件
如题所示,这个sound.mp3文件就是录制完成的文件,可以直接通过手机播放器进行播放。
录音完成!

MediaRecorder参数设置

  • setAudioChannels(int numChannels) 设置录制的音频通道数。
  • setAudioEncoder(int audio_encoder) 设置audio的编码格式
  • setAudioEncodingBitRate(int bitRate) 设置录制的音频编码比特率
  • setAudioSamplingRate(int samplingRate) 设置录制的音频采样率。
  • setAudioSource(int audio_source) 设置用于录制的音源。
  • setAuxiliaryOutputFile(String path) 辅助时间的推移视频文件的路径传递。
  • setAuxiliaryOutputFile(FileDescriptor fd)在文件描述符传递的辅助时间的推移视频
  • setCamera(Camera c) 设置一个recording的摄像头
  • setCaptureRate(double fps) 设置视频帧的捕获率
  • setMaxDuration(int max_duration_ms) 设置记录会话的最大持续时间(毫秒)
  • setMaxFileSize(long max_filesize_bytes) 设置记录会话的最大大小(以字节为单位)
  • setOutputFile(FileDescriptor fd) 传递要写入的文件的文件描述符
  • setOutputFile(String path) 设置输出文件的路径
  • setOutputFormat(int output_format) 设置在录制过程中产生的输出文件的格式
  • setPreviewDisplay(Surface sv) 表面设置显示记录媒体(视频)的预览
  • setVideoEncoder(int video_encoder) 设置视频编码器,用于录制
  • setVideoEncodingBitRate(int bitRate) 设置录制的视频编码比特率。
  • setVideoFrameRate(int rate) 设置要捕获的视频帧速率
  • setVideoSize(int width, int height) 设置要捕获的视频的宽度和高度
  • setVideoSource(int video_source) 开始捕捉和编码数据到setOutputFile(指定的文件)

视频编码格式:default,H263,H264,MPEG_4_SP
获得视频资源:default,CAMERA
音频编码格式:default,AAC,AMR_NB,AMR_WB,
获得音频资源:defalut,camcorder,mic,voice_call,voice_communication,voice_downlink,voice_recognition, voice_uplink;
输出方式:amr_nb,amr_wb,default,mpeg_4,raw_amr,three_gpp.

下载地址

Android录音机
新手可以学习使用,这里按钮我用的是最原始的Button,觉得丑可以自行改成ImageButton。