四路录像,行车记录仪
MediaRecorderDemo
4路摄像头录制 MediaRecorder+TextureView+setMaxDuration 后台服务+悬浮窗+定时长循环+存储自动清理 基于高通
1.项目简介
出租车项目,行车记录仪部分,需求:4路摄像头同录,后台运行,可调出预览画面,定时长循环录制,存储满自动清理。
2.功能实现
服务悬浮窗:Service+View+TextureView,可将4宫格预览画面缩放、显示、隐藏;
循环定长录像:TextureView+MediaRecorder和setMaxDuration +setOnInfoListener+开关录像;
存储清理:cleanSDservice
3.踩坑点
(1)TextureView和SurfaceView的区别?
答:TextureView支持缩放位移隐藏等操作,SurfaceView是独立view,不依赖于父控件,本项目中通过隐藏SurfaceView所在的父控件,不会隐藏SurfaceView,
通过隐藏SurfaceView本身,则会触发其surfaceDestroyed回调销毁,与需求不一致。但是发现性能上TextureView占用的内存更高。
(2)高通平台分辨率的设置和其他平台差异
答:发现谷歌Api设置分辨率的方法在高通平台设置后再获取,没有立即生效。最后加上parameters.set(“video-size”, VIDEO_WIDTH[index] + “x” + VIDEO_HIGTH[index]);才生效;
(3)录像开启失败
答:预览和录像的分辨率设置不一致且要摄像头支持,或MediaRecorder配置设置顺序有误,或设备是否支持多路音频录制。
(4)多路录制和单路录制差异
答:所有问题,单路测试无问题,单路录制运行正常的代码集成到多路录制,发现部分接口运行不生效,这个是平台区别于手机做出了部分自定义修改,手机只有前后置摄像头,且只能开启一路。
(5)其他系统底层问题
答:以下均由framerwork和HAL层解决的问题,涉及同时开启录像报错,画面抖动,多路音频同录报错。
(6)录像时长1分钟,4路录制2个小时后,服务停止。
答:MediaRecorder频繁的开关,底层报错(open too many file 句柄超过1024),导致多媒体服务死机停止,问题定位到句柄增加,且可复现,但底层如何优化处理仍未未出方案,留待解决。
(7)摄像头打开黑屏
答:摄像头资源被占用,关闭其他摄像头应用,底层提供主动释放方法。
(8)预览回调失效
答:启动MediaRecorder录像后,系统会停止预览回调previewcallback。
4.不足之处
MediaRecorder开关来处理定时长存储文件,由于资源释放开启都需要时间,且4路录制,导致录制的前后2个视频间隔有5秒左右,存在漏秒问题,并且频繁的快关,调用setOutputFile,句柄未释放,最后累加,导致服务停止。
5.改进之处
录像的同时还要兼顾拍照,人脸识别,直播等功能,其中涉及到功能之前要不同分辨率的问题;
录像漏秒问题,文件切割是否可以放到底层去做
采用硬编码方式录像 mediacodec+GLSurfaceView+MediaMuxer
5.后续补充
测试发现,性能消耗大户为预览回调,将预览回调用后即焚,用时即开。其次系统用的userdebug版本,使用user正式版本耗性能会降下来。
6.相关链接
项目地址https://github.com/wanglinbo555/MediaRecorderDemo.git
四路录像,行车记录仪相关推荐
- afreecatv 回放下载_行车记录仪怎么看回放?行车记录仪停车后能自动录像吗
点击上面蓝色字↑↑↑即可免费订阅!请喜欢的朋友请转发和分享,让更多朋友看到 汽车知识天天学 (微信号:qiche92 ) 行车记录仪最关键的一个部件,它就是储存零件--TF卡(内存卡).在购买行车记录 ...
- android 循环录像功能吗,行车记录仪到底要不要循环录像
吴川 华南区技术负责人 概要 行车记录仪每天都开启使用的,内存卡容量很快就被用完,循环录像就能解决容量不足的问题,但这个循环录像功能到底好不好?让都叫兽为大家分析一下. 循环录像是行车记录仪的默认功能 ...
- 行车记录仪 - 录像 - 文件缓存
背景 基于ffmpeg实现录像功能,性能不理想,前后路摄像头视频码率相加只有28Mbps加上音频也只有4MB/s左右,使用class 10的sd卡 + 2秒 ringbuffer缓存的情况下,依然出现 ...
- 行车记录仪 - 录像 - ffmpeg AVPacket 复用
背景 基于ffmpeg实现录像功能,性能不理想,分析现有流程发现:写每一帧数据都需要生成一个AVPacket变量传递给av_write_frame,流程如下: av_new_packet函数申请一定大 ...
- Android行车记录仪软件后台录像,二十四小时不间断循环录像,欢迎大家捧场
============问题描述============ http://download.csdn.net/detail/llxxhm/7336907 ============解决方案1======= ...
- 行车记录仪设置php,【必看】如何正确的设置“行车记录仪”
行车记录仪作为一款"有备无患"的汽车应急用品,大多数车主可能在安装完后一直都没有关注过具体使用情况,更别说根据不同的用车情况调整相应的设置了.看到这里,您是不是会问:行车记录仪还需 ...
- 行车记录仪设置php,行车记录仪怎么调设置
行车记录仪设置方法如下: 1.视频分辨率 视频分辨率一直是厂家着力宣传的卖点,从最初的高清720P.全高清1080P到现在的超高清2K,车主朋友们也都耳熟能详.一般行车记录仪的分辨率提供以下几个选项: ...
- 鸿蒙行车记录仪,百度导航新增行车记录仪功能 可消除碰瓷风险
年关将至,市区内各类大型商场.超市.菜市场等地人流密集,此类地点非常容易出现意外状况,市民在驾车出行时千万要提高注意力,警惕碰瓷者倒在你面前.如果事先装载行车记录仪,就能避免一桩"冤案&qu ...
- uni map 实时记录轨迹_北斗GPS汽车行车记录仪,部标808商用轿车专用
JS100是几米针对汽车金融/网约车/出租车等商用轿车市场推出的中低端行车记录仪产品,该产品支持交通部JT/T808部标协议,内置北斗GPS双模.三轴G-sensor.4G/3G/WiFi通信模块,搭 ...
最新文章
- css html 属性区别是什么,css常见属性
- 天梯赛 L1-009 N个数求和 (20 分)
- php增加mysql用户_mysql 增加用户
- 车脸检测 Adaboost 检测过程
- 玩转 SpringBoot 2 之整合 JWT 上篇
- 首个 Ubuntu 平板将于今年秋天面世
- wiki oi3117 高精度练习之乘法
- impress.js学习总结
- 输出调节2.3——内模控制器设计
- IIC协议范例代码(自用)
- java习题5参考练习及答案_JAVA练习题(第5章).ppt
- 面向对象编程 — 为什么要引入抽象概念?
- 为什么网站总显示服务器不能创建对象,automation服务器不能创建对象”的问题的解决方案总结大全...
- 关于数据迁移:解决kettle中mysql的数据是tinyint的kettle查出来后变成boolean问题
- 【绘画素材】Q版线稿参考,欢迎临摹嗷
- Windows 在目录中搜索哪个文件中有指定字符串
- 修改网页视频播放速度
- 从arduino板开始做到阿里云app控制--WeMos D1或ESP8266连接阿里云文章合集及源代码
- 攻防世界writeup——Web(持续更新)
- MOS管损坏典型问题分析