【小驰笔记】【Android Camera开发】【Android Camera2】【camera2】

本课程内容由 @小驰笔记 出品,欢迎关注,获取更多交流信息~
欢迎访问个人博客:www.xiaochibiji.com

我们先来看下MediaRecorder状态图:

一、正常录像

把mediaRecorder的surface,传入到当前session中。该surface是mediaRecorder录像的数据来源。

Surface recorderSurface = mMediaRecorder.getSurface();
surfaces.add(recorderSurface);
mPreviewBuilder.addTarget(recorderSurface);mCameraDevice.createCaptureSession(surfaces, new CameraCaptureSession.StateCallback() {@Overridepublic void onConfigured(@NonNull CameraCaptureSession cameraCaptureSession) {mPreviewSession = cameraCaptureSession;updatePreview();getActivity().runOnUiThread(new Runnable() {@Overridepublic void run() {// Start recordingmMediaRecorder.start();}});}
}

二、MediaRecorder

//1) 创建MediaRecorder对象
mMediaRecorder = new MediaRecorder();//2) 设置Audio数据来源,这里设置来自MIC
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//3) 设置Video数据来源,这里设置来自SURFACE
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);//4) 设置录像格式
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);//5) 创建录像文件路径,这里是绝对路径
if (mNextVideoAbsolutePath == null || mNextVideoAbsolutePath.isEmpty()) {mNextVideoAbsolutePath = getVideoFilePath(getActivity());
}
//6) 设置文件路径
mMediaRecorder.setOutputFile(mNextVideoAbsolutePath);//7)设置录像编码码率,这里是10M
mMediaRecorder.setVideoEncodingBitRate(10000000);//8) 设置录像帧率
mMediaRecorder.setVideoFrameRate(30);//9) 设置录像分辨率
mMediaRecorder.setVideoSize(mVideoSize.getWidth(), mVideoSize.getHeight());//10) 设置录像编码格式
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);//11) 设置录音编码格式
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);//12) 设置视频方向
mMediaRecorder.setOrientationHint(DEFAULT_ORIENTATIONS.get(rotation));//13) prepare并开始录像
mMediaRecorder.prepare();
mMediaRecorder.start();//14) 停止并释放录像
mMediaRecorder.stop();
mMediaRecorder.reset();

三、 慢动作录像

关于高通平台的慢动作录像,前面专门写过一篇文章:

https://mp.weixin.qq.com/s/vpGHY_N1rE-_0CPKQmzOpw

1)从Android 6.0开始,Camera相关的,添加了一个新的类CameraConstrainedHighSpeedCaptureSession,从描述上看,我们就可以知道,这个是专门为高速、高帧率录像准备的。换一句话说,也就是Android 6.0以上,Android本身才支持这个高速、高帧率录像。

2)通过CONTROL_AVAILABLE_HIGH_SPEED_VIDEO_CONFIGURATIONS来获取available size。如果存在available,则判断为支持。

3)获取支持的高帧率录像videoSize

从map.getHighSpeedVideoSizes()中获取支持的videoSize,然后选择个合适的size,注意这里的previewSize需要和videoSize保持一致。

4)CONTROL_AE_TARGET_FPS_RANGE设置为高帧率范围(120,120)

5)创建session采用createConstrainedHighSpeedCaptureSession

高帧率录像创建session,使用专门提供的api接口。

6)采用setRepeatingBurst session

configure成功后,调用setRepeatingBurst不停的request,这个和正常模式有点区别,正常模式是调用的 setRepeatingRequest。

7)MediaRecorder相关参数设置为对应的高帧率参数

相关视频持续录制中…

推荐阅读:

关于我

博客大更新_

今年,做好一件事情

一篇文章带你了解Android 最新Camera框架

深圳上班,

从事Android Camera相关软件开发工作,

记录生活和工作的点滴,

点击关注“小驰笔记”,期待和你相遇~

从零开发一款相机APP 第九篇: Camera2相机 录像功能实现相关推荐

  1. 从零开发一款笔记APP——神马笔记WhatsNote

    从零开发一款笔记APP--神马笔记WhatsNote 一.主要功能 二.开发过程 三.优质的笔记应用 四.附录 一.主要功能 笔记的主要功能分为三个部分: 管理 目录--多层目录结构 标签--单层结构 ...

  2. Android Camera:从零开发一款相机APP

    从零开发一款相机APP Day 1: 前言 一.Android Camera开发前景: 1)camera相关应用的领域 2)相关岗位介绍: 3)市场招聘介绍: 4)发展前景介绍: 二.学习这门课的重要 ...

  3. 从零开发一款相机 第五篇:Camera api1实现预览、拍照、录像功能

    本课程内容由 @小驰笔记 出品,欢迎关注,获取更多交流信息~ 欢迎访问个人博客:www.xiaochibiji.com 这节课,我们主要讲解如果使用camera api1接口,实现预览.拍照以及录像功 ...

  4. 手牵手,使用uni-app从零开发一款视频小程序 (系列上 准备工作篇)

    系列文章 手牵手,使用uni-app从零开发一款视频小程序 (系列上 准备工作篇) 手牵手,使用uni-app从零开发一款视频小程序 (系列下 开发实战篇) 前言 好久不见,很久没更新博客了,前段时间 ...

  5. 开发一款外卖App应该具备哪些功能?

    手机app的出现改变了每个人的消费习惯,也改变了每个人的日常生活方式,没有遗漏任何东西.你是否还记的你上次中午下班去吃饭的情景?我不记得我上次中午下班出去吃饭是什么时候了,因为我已经习惯了打开外卖Ap ...

  6. 开发一款旅游APP应包含哪些功能板块呢?

    现在生活节奏快.工作高强度往往压的我们喘不过气,甚至已经严重影响我们的身心健康.旅游出行这件事已经出现在越来越多人的生活计划里.随着国民旅游意愿高涨,旅游行业市场增长十分迅猛,面对急剧上升的旅游需求, ...

  7. 打车类app怎么获取司机位置 开发_详谈开发一款打车APP应用的解决方案

    随着移动互联网的发展,使得人们的日常生活越来越便捷,其中改变最大的便是交通出行.正是如此,有些企业于是联想到其中的商机,想要借助于长沙APP开发,打造一款打车APP应用.那么接下来,长沙APP制作创研 ...

  8. 安卓新手如何学习开发一款游戏APP呢?

    毫无疑问,开发一款自己的App对于初学者来说,无论从技术学习,还是找工作,开发手机游戏而言,都是一大利器.那么如何才能快速上手,开发一款属于自己的app.本篇文章仅以自己的一些经验给更多的Androi ...

  9. html+css+js+Hbuilder开发一款安卓APP,根本不用学Android开发!

    我们知道,要做一款安卓APP,咱们得先学安卓开发语言,例如java,前端后端.那么没有这些开发语言基础,咱们怎么做呢?其实现在有比较好的开发方案就是做webAPP,咱们可以用web前端知识构建安卓客户 ...

最新文章

  1. 设计模式之简单工厂模式学习笔记
  2. python闭环最短路径_python实现最短路径的实例方法
  3. win10浏览器_Win10系统中ie浏览器的证书错误应该如何解决?
  4. 关于nodejs中npm命令没有反应的解决方法
  5. dijkstra算法代码_深度好文:改变了我们生活方式最有影响力的5种图算法
  6. 05.SpringBoot的yml配置详解
  7. Hbase分布式列存储数据库
  8. Office 365 之 Skype For Business电话功能试用
  9. Java完全自学手册,一册在手,offer我有(附程序员书单)
  10. 合格PLC电气工程师需要会什么?
  11. 论文中期报告要怎么写?
  12. iText 7 html2pdf 使用总结
  13. 计算机光纤接口网卡,光纤网卡是什么?
  14. ReactNative常用插件使用
  15. st3搭建python开发环境
  16. 设计模式学习系列6 原型模式(prototype)
  17. 大数据之直播平台数据统计
  18. AI人工智能机器人教室方案(含全套配置)
  19. 痞子衡嵌入式:ARM Cortex-M文件那些事(4)- 可重定向文件(.o/.a)
  20. 计算机专业英语推荐信,关于英文推荐信范文3篇

热门文章

  1. python sklearn 置信概率
  2. js对象继承的方式-三种 +三种
  3. 怎么样在Window10桌面查找显示“此电脑”或“我的电脑”图标?
  4. 爬虫实战3—微博的抓取
  5. centos7配置好网络后,重启网络不可用问题(Failed to start LSB: Bring up/down networking.)
  6. 智能物联网试验箱 CY-TIY简介
  7. 玉米社:直播间很冷清?8大抖音直播话术,喜欢得收藏
  8. 【教学类-32-02】十二生肖2.0版(绘画+手工+排序+左右分类+玩牌)(中班:偏科学-数)
  9. 麦包包CEO叶海峰:从互联网走出来的中国第一箱包品牌
  10. 借助ChatGPT爆火,股价暴涨又暴跌后,C3.ai仍面临巨大风险