MediaRecorder用于录像录音。

1、使用到的权限

 <user-permission android:name="android.permission.RECORD_AUdio"/><user-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><user-permission android:name="android.permission.CAMERA"/><user-permission android:name="android.permission.FLASHLIGHT"/><user-permission android:name="android.permission.MOUNT_UNMOUNT_FILRSYSTEMS"/><user-permission android:name="android.hardware.camera"/><user-permission android:name="android.hardware.camera.autofocus"/>

2、以下是关于录制视频的调用

 mediaRecorder = new MediaRecorder(); // 创建mediaRecorder.reset(); // 设置为空闲模式 可以赋属性了mediaRecorder.setCamera(mCamera);// 设置一个摄像头用于录制。mediaRecorder.setOnErrorListener(new MediaRecorder.OnErrorListener() {@Overridepublic void onError(MediaRecorder mr, int what, int extra) {try {if (mediaRecorder != null) {mediaRecorder.reset();}} catch (Exception e) {e.printStackTrace();}}});//  记录录制时出现的错误的监听器,调用reset();方法设置为空闲模式// 使用SurfaceView预览mediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());// 1.设置采集声音// mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);// 设置采集图像mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);// 2.设置视频,音频的输出格式 mp4mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);// 3.设置音频的编码格式// mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);// 设置图像的编码格式mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);// 音频一秒钟包含多少数据位CamcorderProfile mProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_480P);mediaRecorder.setAudioEncodingBitRate(44100);if (mProfile.videoBitRate > 2 * 1024 * 1024)mediaRecorder.setVideoEncodingBitRate(2 * 1024 * 1024);elsemediaRecorder.setVideoEncodingBitRate(1024 * 1024);mediaRecorder.setVideoFrameRate(mProfile.videoFrameRate);// 设置选择角度,顺时针方向,因为默认是逆向90度的,这样图像就是正常显示了,这里设置的是观看保存后的视频的角度// mediaRecorder.setOrientationHint(90);if (bBack) {//如果是后置摄像头:mediaRecorder.setOrientationHint(90);} else {// 如果是前置摄像头:mediaRecorder.setOrientationHint(270);}// 设置录像的分辨率mediaRecorder.setVideoSize(352, 288);// 储存 文件地址mediaRecorder.setOutputFile(mVecordFile.getAbsolutePath());
try {// 开始录制mediaRecorder.prepare();mediaRecorder.start();} catch (IOException e) {e.printStackTrace();}

3、视频停止录制

          //下面三个参数必须加,不加的话会奔溃,在mediarecorder.stop();//报错为:RuntimeException:stop failedmediaRecorder.setOnErrorListener(null);mediaRecorder.setOnInfoListener(null);mediaRecorder.setPreviewDisplay(null);// 停止录制mediaRecorder.stop();mediaRecorder.reset();// 释放资源mediaRecorder.release();mediaRecorder = null;

4、使用时注意需注意的点

  • 1、在使用时需要调用相机权限,但是通过权限申请调用时拒绝了相机权限,部分手机上还是返回相机权限申请成功,因此判断相机权限是否有我们加了以下方法
 public boolean isCameraUseable() {boolean canUse = true;Camera mCamera = null;try {mCamera = Camera.open();Camera.Parameters mParameters = mCamera.getParameters();mCamera.setParameters(mParameters);} catch (Exception e) {canUse = false;}if (mCamera != null) {mCamera.release();}return canUse;}
  • 2、因为我们做了视频录制和删除,在判断视频过段时,会删除录制的视频,发现一个小坑,因为我们是在点击开始录制时才开始初始化mediaRecorder,发现有部分用户刚点击了就停止,因此还未开始录制,部分低版本手机mediarecorder还未初始化完成,因此在调用stop方法时会显示Fatal Exception: java.lang.RuntimeException
    stop failed. 测试发现初始化发现最多需要300毫秒,可以更具其判断,也可更具录制的视频时间来进行判断
  • 3、页面销毁时别忘记释放资源

MediaRecorder使用相关推荐

  1. 我的Android进阶之旅------gt;Android中MediaRecorder.stop()报错 java.lang.RuntimeException: stop failed....

    今天在调用MediaRecorder.stop(),报错了,java.lang.RuntimeException: stop failed. E/AndroidRuntime(7698): Cause ...

  2. 安卓双摄像头录像_android开发之调用手机的摄像头使用MediaRecorder录像并播放_Android_脚本之家...

    我们玩玩手机的录像功能吧.做个DEMO. 看看录制过程: 复制代码 代码如下: mediarecorder = new MediaRecorder();// 创建mediarecorder对象 // ...

  3. Android mediaRecorder框架简述(二)

    这里有个setupVideiEncoder,看来这里应该是对视频编码的地方 根据不同的编码类型来设置不同的参数,这个方法代码有些多直截取部分代码: 来看看关键的一句,这里创建了OMXCodec 然后把 ...

  4. Android mediaRecorder框架简述(一)

    下面是框架简图: 首先调用mediaRecorder.java中的方法比如start方法,会调用jni: 也就是调用android_media_recorder.cpp的start方法: 接着到med ...

  5. Android MediaRecorder架构详解

    1. 简介 在android中录制音频有两种方式,MediaRecorder和AudioRecord.两者的区别如下: (1) MediaRecorder 简单方便,不需要理会中间录制过程,结束录制后 ...

  6. Android 4.4 MediaRecorder系统结构

    前面有分析过Camera的实现,现在来看看MediaRecorder的实现,这里我不会太去关注它的分层结构,我更关注它的逻辑! APP层/path/to/aosp/frameworks/base/me ...

  7. Android MediaRecorder系统结构

    前面有分析过Camera的实现,现在来看看MediaRecorder的实现,这里我不会太去关注它的分层结构,我更关注它的逻辑! APP层 /path/to/aosp/frameworks/base/m ...

  8. Android 过滤无效录音数据,android – MediaRecorder类记录音频的问题 – prepare()给出异常 – 权限被拒绝...

    我是Android开发的新手,我有下一个问题/问题. 所以我有一个初始化和配置MediaRecorder对象的方法,以便开始录制.在这里你有代码: //initializes audio record ...

  9. Android 用MediaRecorder录制视频太短崩的问题

    具体表现: 调用MediaRecorder的start()与stop()间隔不能小于1秒(有时候大于1秒也崩),否则必崩. 错误信息: java.lang.RuntimeException: stop ...

  10. Android 中使用MediaRecorder进行录像详解(视频录制)

    简单的视频录制功能. package com.video; import java.io.IOException; import android.app.Activity; import androi ...

最新文章

  1. java 基础算法教程ppt,基础排序算法(附加java实现)
  2. 【Linux】Face Recognition的封装
  3. JavaWeb(四)——在IDEA中配置Tomcat、pom文件
  4. python登录接口代码_(转载)Python 的 OAuth 登录接口 python-oauth2
  5. 《阿里巴巴Java开发规约》插件使用详细指南
  6. 浅析微信支付:微信支付简单介绍(小程序、公众号、App、H5)
  7. vue 限制输入字符长度
  8. 动画道路上的新宠 -- Lottie
  9. java access 分页查询语句,爱不释手—几条常见的数据库分页之SQL语句代码
  10. UOJ424 Count 生成函数、多项式求逆、矩阵快速幂
  11. 安装java正在使用中_如何安装java,安装JDK,JAVA SE正在使用中,安装不了
  12. QQ音乐与网易云音乐评测分析
  13. 微信公众号网页登录开发测试步骤详解
  14. AMD CPU 超频
  15. android百度字体大小设置快捷键,(安卓)百度输入法定制版 — 清爽无广告
  16. 77 关于 java.util.concurrent.RejectedExecutionException:Thread limit exceeded replacing blocked worker
  17. oppo文件管理android在哪里,OPPO手机中缓存视频文件路径在哪里查看?怎么查看?
  18. T细胞培养、分离方法大比拼
  19. 基于web的学生管理系统(三)前端页面
  20. 喜马拉雅主播工具软件:图片OCR文字识别自动转成mp3高品质语音文件

热门文章

  1. Docker(应用服务引擎)
  2. 使用 userdel 命令删除 Linux 中的用户
  3. Daily-Interview-Question
  4. 数三角形 (组合数学+分类讨论)
  5. mysql有关运维的面试题_mysql数据库运维面试题
  6. 高中物理基础学习笔记一
  7. iOS中 CoreGraphics快速绘图(详解) 韩俊强的博客
  8. CAD一键添加审图批注、AUTOCAD——图形界线怎么设置
  9. 辽宁初级药师职称计算机考试时间,一文get!2020年药士\药师\主管药师考试安排详情!...
  10. 定点运算之原码的加减交替除法(不恢复余数法)