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

四路录像,行车记录仪相关推荐

  1. afreecatv 回放下载_行车记录仪怎么看回放?行车记录仪停车后能自动录像吗

    点击上面蓝色字↑↑↑即可免费订阅!请喜欢的朋友请转发和分享,让更多朋友看到 汽车知识天天学 (微信号:qiche92 ) 行车记录仪最关键的一个部件,它就是储存零件--TF卡(内存卡).在购买行车记录 ...

  2. android 循环录像功能吗,行车记录仪到底要不要循环录像

    吴川 华南区技术负责人 概要 行车记录仪每天都开启使用的,内存卡容量很快就被用完,循环录像就能解决容量不足的问题,但这个循环录像功能到底好不好?让都叫兽为大家分析一下. 循环录像是行车记录仪的默认功能 ...

  3. 行车记录仪 - 录像 - 文件缓存

    背景 基于ffmpeg实现录像功能,性能不理想,前后路摄像头视频码率相加只有28Mbps加上音频也只有4MB/s左右,使用class 10的sd卡 + 2秒 ringbuffer缓存的情况下,依然出现 ...

  4. 行车记录仪 - 录像 - ffmpeg AVPacket 复用

    背景 基于ffmpeg实现录像功能,性能不理想,分析现有流程发现:写每一帧数据都需要生成一个AVPacket变量传递给av_write_frame,流程如下: av_new_packet函数申请一定大 ...

  5. Android行车记录仪软件后台录像,二十四小时不间断循环录像,欢迎大家捧场

    ============问题描述============ http://download.csdn.net/detail/llxxhm/7336907 ============解决方案1======= ...

  6. 行车记录仪设置php,【必看】如何正确的设置“行车记录仪”

    行车记录仪作为一款"有备无患"的汽车应急用品,大多数车主可能在安装完后一直都没有关注过具体使用情况,更别说根据不同的用车情况调整相应的设置了.看到这里,您是不是会问:行车记录仪还需 ...

  7. 行车记录仪设置php,行车记录仪怎么调设置

    行车记录仪设置方法如下: 1.视频分辨率 视频分辨率一直是厂家着力宣传的卖点,从最初的高清720P.全高清1080P到现在的超高清2K,车主朋友们也都耳熟能详.一般行车记录仪的分辨率提供以下几个选项: ...

  8. 鸿蒙行车记录仪,百度导航新增行车记录仪功能 可消除碰瓷风险

    年关将至,市区内各类大型商场.超市.菜市场等地人流密集,此类地点非常容易出现意外状况,市民在驾车出行时千万要提高注意力,警惕碰瓷者倒在你面前.如果事先装载行车记录仪,就能避免一桩"冤案&qu ...

  9. uni map 实时记录轨迹_北斗GPS汽车行车记录仪,部标808商用轿车专用

    JS100是几米针对汽车金融/网约车/出租车等商用轿车市场推出的中低端行车记录仪产品,该产品支持交通部JT/T808部标协议,内置北斗GPS双模.三轴G-sensor.4G/3G/WiFi通信模块,搭 ...

最新文章

  1. css html 属性区别是什么,css常见属性
  2. 天梯赛 L1-009 N个数求和 (20 分)
  3. php增加mysql用户_mysql 增加用户
  4. 车脸检测 Adaboost 检测过程
  5. 玩转 SpringBoot 2 之整合 JWT 上篇
  6. 首个 Ubuntu 平板将于今年秋天面世
  7. wiki oi3117 高精度练习之乘法
  8. impress.js学习总结
  9. 输出调节2.3——内模控制器设计
  10. IIC协议范例代码(自用)
  11. java习题5参考练习及答案_JAVA练习题(第5章).ppt
  12. 面向对象编程 — 为什么要引入抽象概念?
  13. 为什么网站总显示服务器不能创建对象,automation服务器不能创建对象”的问题的解决方案总结大全...
  14. 关于数据迁移:解决kettle中mysql的数据是tinyint的kettle查出来后变成boolean问题
  15. 【绘画素材】Q版线稿参考,欢迎临摹嗷
  16. Windows 在目录中搜索哪个文件中有指定字符串
  17. 修改网页视频播放速度
  18. 从arduino板开始做到阿里云app控制--WeMos D1或ESP8266连接阿里云文章合集及源代码
  19. 攻防世界writeup——Web(持续更新)
  20. MOS管损坏典型问题分析

热门文章

  1. java多线程和GUI实现抽奖界面
  2. MySQL数据库与数据仓库有什么区别
  3. 2020 计蒜客蓝桥杯B 组模拟赛(三)——突破障碍
  4. honeywell FTE桥接模块TK-FTEB01 51309512-175
  5. fake库学习记录附实例
  6. 利用电表SOC芯片RN7211低成本实现三路高精度24位AD采集(带PGA功能)
  7. 电子电路设计——三路报警电路设计
  8. 计算机在设计中发挥着怎样的作用,计算机图像处理技术在网页设计中的应用
  9. RobotFramework 之 公共变量
  10. 基于BP神经网络的手写数字识别