原文地址:Android 录音和播放

今天主要讲解一下使用MediaRecorder 实现录音,主要是参照Android官网介绍来说明。

  今天讲的并不能实现一边录音一边播放,下一篇文章我再说如何解决这问题。下面是我们今天要讲解的Mediarecorder的状态机图。摘录自Android官网。

(PS:新建的QQ群,有兴趣可以加入一起讨论:Android群:322599434)

1、使用Mediarecorder 录音

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

  1. //Edited by mythou
    //泡泡糖 - 博客园
  1. MediaRecorder recorder = new MediaRecorder();
  2. recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
  3. recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
  4. recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
  5. recorder.setOutputFile(PATH_NAME);
  6. recorder.prepare();
  7. recorder.start(); // 开始录音
  8. ...
  9. recorder.stop();
  10. recorder.reset(); // You can reuse the object by going back to setAudioSource() step
  11. recorder.release(); // Now the object cannot be reused

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

2、MediaRecorder 相关的类

  1. //Edited by mythou
    //泡泡糖 - 博客园
  1. //定义音频编码
  2. class MediaRecorder.AudioEncoder
  3. //定义声音资源
  4. class MediaRecorder.AudioSource
  5. //回调接口,当录音出现错误的时候调用
  6. interface MediaRecorder.OnErrorListener
  7. //回调接口,当录音出现错误的时候调用
  8. interface MediaRecorder.OnInfoListener
  9. //定义输出格式
  10. class MediaRecorder.OutputFormat
  11. //定义视频编码
  12. class MediaRecorder.VideoEncoder
  13. //定义视频source
  14. class MediaRecorder.VideoSource

3、MediaRecorder常用方法

  1. //Edited by mythou
    //泡泡糖 - 博客园
  1. //获取音频信号源的最高值。
  2. final static int getAudioSourceMax()
  3. //最后调用这个方法采样的时候返回最大振幅的绝对值
  4. int getMaxAmplitude()
  5. //准备recorder 开始捕获和编码数据
  6. void prepare()
  7. //发布与此MediaRecorder对象关联的资源
  8. void release()
  9. //重新启动mediarecorder到空闲状态
  10. void reset()
  11. //设置录制的音频通道数。
  12. void setAudioChannels(int numChannels)
  13. //设置audio的编码格式
  14. void setAudioEncoder(int audio_encoder)
  15. //设置录制的音频编码比特率
  16. void setAudioEncodingBitRate(int bitRate)
  17. //设置录制的音频采样率。
  18. void setAudioSamplingRate(int samplingRate)
  19. //设置用于录制的音源。
  20. void setAudioSource(int audio_source)
  21. //辅助时间的推移视频文件的路径传递。
  22. void setAuxiliaryOutputFile(String path)
  23. void setAuxiliaryOutputFile(FileDescriptor fd)
  24. //在文件描述符传递的辅助时间的推移视频
  25. //设置一个recording的摄像头
  26. void setCamera(Camera c)
  27. //设置视频帧的捕获率
  28. void setCaptureRate(double fps)
  29. //设置记录会话的最大持续时间(毫秒)
  30. void setMaxDuration(int max_duration_ms)
  31. //设置记录会话的最大大小(以字节为单位)
  32. void setMaxFileSize(long max_filesize_bytes)
  33. //注册一个回调被调用发生错误时,同时录制
  34. void setOnErrorListener(MediaRecorder.OnErrorListener l)
  35. //注册要同时记录一个信息事件发生时调用的回调。
  36. void setOnInfoListener(MediaRecorder.OnInfoListener listener)
  37. //设置输出的视频播放的方向提示
  38. void setOrientationHint(int degrees)
  39. //传递要写入的文件的文件描述符
  40. void setOutputFile(FileDescriptor fd)
  41. //设置输出文件的路径
  42. void setOutputFile(String path)
  43. //设置在录制过程中产生的输出文件的格式
  44. void setOutputFormat(int output_format)
  45. //表面设置显示记录媒体(视频)的预览
  46. void setPreviewDisplay(Surface sv)
  47. //从一个记录CamcorderProfile对象的使用设置
  48. void setProfile(CamcorderProfile profile)
  49. //设置视频编码器,用于录制
  50. void setVideoEncoder(int video_encoder)
  51. //设置录制的视频编码比特率
  52. void setVideoEncodingBitRate(int bitRate)
  53. //设置要捕获的视频帧速率
  54. void setVideoFrameRate(int rate)
  55. //设置要捕获的视频的宽度和高度
  56. void setVideoSize(int width, int height)
  57. //开始捕捉和编码数据到setOutputFile(指定的文件)
  58. void setVideoSource(int video_source)
  59. //开始录音
  60. void start()
  61. //停止recording
  62. void stop()

4、播放录音

  1. //Edited by mythou
    //泡泡糖 - 博客园
  1. mPlayer = new MediaPlayer();
  2. mPlayer.setDataSource(mSampleFile.getAbsolutePath());
  3. mPlayer.setOnCompletionListener(this);
  4. mPlayer.setOnErrorListener(this);
  5. mPlayer.prepare();
  6. mPlayer.start();
  7. //.......
  8. mPlayer.stop();
  9. mPlayer.release();
  10. mPlayer = null;

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

  MediaRecorder的使用方法很简单,最后给出Android源码里面的录音程序,方便有需要的朋友下载看看。下一篇文章再讲解如何实现一边录音一边播放功能。

Android 录音和播放相关推荐

  1. Android录音并播放(mp3或amr格式)

    Android项目中媒体是很多人头疼的一个问题,不仅仅因为处理起来很麻烦,而且不同的手机差别很大(和硬件,系统都有关系),今天就总结一下Android中的录音和播放,可保存成mp3或amr格式. 小米 ...

  2. android 录音与播放录音 带根据音频大小动态效果

    先看看效果图:         首先是布局文件: <?xml version="1.0" encoding="utf-8"?> <Linear ...

  3. Android录音与播放

    Android多媒体框架包含获取和编码多种音频格式的支持,所以你可以轻松地把音频合并到你的应用中.如果设备支持,你可以使用MediaRecorder APIs 进行录音. 本章向你展示如何写一个应用从 ...

  4. [Android] 录音与播放录音实现

    android开发文档中有一个关于录音的类MediaRecord,一张图介绍了基本的流程: 给出了一个常用的例子: MediaRecorder recorder = new MediaRecorder ...

  5. 音视频开发 ● android录音到播放的整个过程

    使用 AudioRecord 采集音频PCM并保存到文件: api - AndioRecord : AndioRecord类的主要功能是让各种JAVA应用能够管理音频资源,以便它们通过此类能够录制声音 ...

  6. Android 实时录音和回放,边录音边播放 (KTV回音效果)

    原文地址为: Android 实时录音和回放,边录音边播放 (KTV回音效果) 上一篇介绍了如何使用Mediarecorder来录音,以及播放录音.不过并没有达到我的目的,一边录音一边播放.今天就讲解 ...

  7. Android开发之PCM录音实时播放的实现方法 | 边录音边播放 |PCM录音播放无延迟 | 录音无杂音 | 录音无噪音

    先说下录音得开启录音权限 <uses-permission android:name="android.permission.RECORD_AUDIO" /> 然后录音 ...

  8. android录音播放并上传

    最近研究了下录音上传,各位有需要可参考下,如有不妥欢迎指出 <pre name="code" class="html">package com.ki ...

  9. Android音频录制方案,Android录音,录制其他App播放的声音

    Android录音,录制其他App播放的声音 从Android10(SDK 29)版本开始,可以设置录音App的源为其他App,这样就可以录制其他App播放的声音 此方案有以下注意几点 设置了源为其他 ...

最新文章

  1. 分享一个多线程实现[冒泡][选择][二分法]排序的例子
  2. AssetBundle
  3. 微信 小程序组件 循环
  4. C++:12---运算符重载
  5. 【机器学习-西瓜书】二、性能度量:召回率;P-R曲线;F1值;ROC;AUC
  6. docker端口映射失效解决方法
  7. Android Studio禁止混淆JNI代码
  8. Ubuntu配置 PPTP 服务器端
  9. android xml 指纹动画,Android 指纹识别(给应用添加指纹解锁)
  10. 机器学习 python 随机抽样random sampling 代码
  11. puml绘制思维导图_盘点那些美美哒的在线思维导图制作神器
  12. 人脸识别智能门禁D508也能“码”上开门
  13. Chrome 字体模糊解决
  14. 如何用python计算圆周率_如何用python计算圆周率?
  15. 三年Java开发,java程序员电脑推荐
  16. 设置每天定时给自己发送邮件、企业微信提醒
  17. mpvue项目--书架读书
  18. Rxjava入门与使用
  19. 愚人节搞怪——突破IP限制刷票
  20. 亲测教程分享|客服系统搭建详细教程,PHP在线客服系统,来客客服系统源码

热门文章

  1. 《这样读书就够了》读书笔记
  2. 关于GVF的一些理解
  3. Domestic Altcoins Hard to Turn Over
  4. 股票和期货有什么区别(期货投机与股票投机的区别)
  5. 文字转语音朗读怎么操作?
  6. Shopee店铺没流量无出单,如何获取流量?
  7. css 中多个class选择器的详解
  8. 激光雷达的“软”实力竞赛
  9. 在自己的项目中使用阿里云字体图标
  10. 思科《计算机网络》期末考试答案B卷