用媒体采样类库:MediaRecorder来编写Android 录音

分类:手机开发| 发布:佚名| 查看: | 发表时间:2014/12/23

   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
  //定义音频编码
  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;

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

365据说看到好文章不转的人,服务器容易宕机
原创文章如转载,请注明:转载自郑州网建-前端开发 http://camnpr.com/
本文链接:http://camnpr.com/mobile-dev/1837.html