Hi,网页设计师综合门户欢迎您!
设为首页  加为收藏  我要投稿找回密码免责声明意见反馈

招聘精英个人求职推广网站网友作品网页特效动画欣赏网页素材酷站欣赏源码下载设计软件

  • 全站搜索
  • 新闻资讯
  • 网页教程
  • 平面教程
  • 程序设计
  • 视频教程
  • Flash教程

网页设计师提供网页设计、网站程序开发、系统开发等,请联系QQ 103198680

 您当前的位置:首页 > 阅读文章
网页设计师综合门户欢迎您!

使用MediaRecorder编写Android 录音

刊登方式:转载   来源:网络  作者:  关键词:平面设计理念  更新时间:2017/8/5

   1、使用Mediarecorder 录音

  MediaRecorder类用来进行媒体采样,包括音频和视频。也就是用来记录音频和视频方法的类,记录的数据一般都是写入到文件里面。因此我们可以通过这个类实现录音和录视频的功能。下面介绍MediaRecorder用来录音的简单方法:

  MediaRecorder recorder = new MediaRecorder();

  recorder.setAudioSource(MediaRecorder.AudioSource.MIC);

  recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

  recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

  recorder.setOutputFile(PATH_NAME);

  recorder.prepare();

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

  ...

  recorder.stop();

  recorder.reset(); // You can reuse the object by going back to setAudioSource() step

  recorder.release(); // Now the object cannot be reused

  上面是使用MediaRecorder录音的简单流程代码,基本上你使用的代码,就能实现录音的功能。

  2、MediaRecorder 相关的类

  //Edited by mythou

  //http://www.cnblogs.com/mythou/

  //定义音频编码

  class MediaRecorder.AudioEncoder

  //定义声音资源

  class MediaRecorder.AudioSource

  //回调接口,当录音出现错误的时候调用

  interface MediaRecorder.OnErrorListener

  //回调接口,当录音出现错误的时候调用

  interface MediaRecorder.OnInfoListener

  //定义输出格式

  class MediaRecorder.OutputFormat

  //定义视频编码

  class MediaRecorder.VideoEncoder

  //定义视频source

  class MediaRecorder.VideoSource

  3、MediaRecorder常用方法

  //获取音频信号源的最高值。

  final static int getAudioSourceMax()

  //最后调用这个方法采样的时候返回最大振幅的绝对值

  int getMaxAmplitude()

  //准备recorder 开始捕获和编码数据

  void prepare()

  //发布与此MediaRecorder对象关联的资源

  void release()

  //重新启动mediarecorder到空闲状态

  void reset()

  //设置录制的音频通道数。

  void setAudioChannels(int numChannels)

  //设置audio的编码格式

  void setAudioEncoder(int audio_encoder)

  //设置录制的音频编码比特率

  void setAudioEncodingBitRate(int bitRate)

  //设置录制的音频采样率。

  void setAudioSamplingRate(int samplingRate)

  //设置用于录制的音源。

  void setAudioSource(int audio_source)

  //辅助时间的推移视频文件的路径传递。

  void setAuxiliaryOutputFile(String path)

  void setAuxiliaryOutputFile(FileDescriptor fd)

  //在文件描述符传递的辅助时间的推移视频

  //设置一个recording的摄像头

  void setCamera(Camera c)

  //设置视频帧的捕获率

  void setCaptureRate(double fps)

  //设置记录会话的最大持续时间(毫秒)

  void setMaxDuration(int max_duration_ms)

  //设置记录会话的最大大小(以字节为单位)

  void setMaxFileSize(long max_filesize_bytes)

  //注册一个回调被调用发生错误时,同时录制

  void setOnErrorListener(MediaRecorder.OnErrorListener l)

  //注册要同时记录一个信息事件发生时调用的回调。

  void setOnInfoListener(MediaRecorder.OnInfoListener listener)

  //设置输出的视频播放的方向提示

  void setOrientationHint(int degrees)

  //传递要写入的文件的文件描述符

  void setOutputFile(FileDescriptor fd)

  //设置输出文件的路径

  void setOutputFile(String path)

  //设置在录制过程中产生的输出文件的格式

  void setOutputFormat(int output_format)

  //表面设置显示记录媒体(视频)的预览

  void setPreviewDisplay(Surface sv)

  //从一个记录CamcorderProfile对象的使用设置

  void setProfile(CamcorderProfile profile)

  //设置视频编码器,用于录制

  void setVideoEncoder(int video_encoder)

  //设置录制的视频编码比特率

  void setVideoEncodingBitRate(int bitRate)

  //设置要捕获的视频帧速率

  void setVideoFrameRate(int rate)

  //设置要捕获的视频的宽度和高度

  void setVideoSize(int width, int height)

  //开始捕捉和编码数据到setOutputFile(指定的文件)

  void setVideoSource(int video_source)

  //开始录音

  void start()

  //停止recording

  void stop()

  4、播放录音

  mPlayer = new MediaPlayer();

  mPlayer.setDataSource(mSampleFile.getAbsolutePath());

  mPlayer.setOnCompletionListener(this);

  mPlayer.setOnErrorListener(this);

  mPlayer.prepare();

  mPlayer.start();

  //.......

  mPlayer.stop();

  mPlayer.release();

  mPlayer = null;

  上面是一段简单播放录音的过程,结合上面录音代码,就可以实现录音和回放。