基于android系统DVR稳定性问题分析及对策

DVR,全名Digital Video Recorder,数字视频录像机,在车载行业大家通俗的叫行车记录仪,因为这个数字视频的内容是行车的形式动态。如今,在道德滑坡的社会不良风气的影响下,出现了诸多的碰瓷党,因此行车记录仪就成了车主的保护神,有了视频录像作为证据,交警来了自己心里都更有底气。但是如何把这个功能做得稳定可靠呢?

很多人可能会想,不就一个录像嘛,还能出多大异常啊!这个功能不难啊!哈哈!当然,不难的是搞出一个有这个功能的产品,难的是搞出一个有这个功能高稳定性、高可靠性的产品,产品的价值也就体现在这上面。首先,录像大家都追求一个视频分辨率,分辨率越高理论上需要存储的数据就越多,码率越高存储的数据量也越多;另外图像的质量好坏也是一个直接的竞争力,行车路况、天气情况每天每时都不大一样,在明亮的环境下,在阴暗的桥洞下,在有灯的隧道,无灯的隧道,有树荫的地方,以及蓝天白云的空旷地,白天很夜晚,场景很多,每种场景要有一个好效果,那必须多每个这种场景去做一个适配调节,并且还需要能够快速反应自适应,有HDR宽动态的只是一个具备这种能力,要调出效果还需要很多汗水跟毅力。扯远了点,DVR是存在哪里的呢?从目前整个行业的普遍做法还是存在TF卡里面,也就是通常叫的SD卡,这种卡易拔插,携带方便,替换也方便,卡的品质等级也有很多种,比如C2,C4,C6,C10,还有U1,U3等,等级越高读写速度越好,价格也越高。卡的性能也会影响DVR功能的稳定性,至关重要!

/*****************************************************************************************************/
声明:本博内容均由http://blog.csdn.net/edsam49原创,转载请注明出处,谢谢!
/*****************************************************************************************************/

首先,我们从源头的数据量来考虑。我们的理想是,图像非常清晰,质量高,录像出来的文件都像美国大片那样细腻。但是现实是做不到的,主要产业链的瓶颈还是在存储上跟编码的效率上。编解码目前主流的还是H.264的,支持H.265的并不多,那么我们就以H.264来讲,图像编码的质量越高需要的码率也就越高,单位时间内需要存储的编码后的视频数据量就越大。目前纯行车记录仪的产品,比如小米的、360的他们支持前视录像的,码率都达到了10Mb/s以上,1080P的,每分钟存储量达到100M以上,理论上C4及以上的SD卡就能满足了,但是SD卡的品质参差不齐,还有很多造假的,杂牌厂贴牌的,比如C4的卡刚开始使用,可能可以达到3M以上的读写速度,但是卡用一个月后,性能急剧下降,可能就不到2M了,越往后就越慢,因此基本上都是配的C10的卡,考虑性能效率下降,在3个月内还能扛得住。SD卡作为一个易耗品,本来也是要经常更换的,一般3~6个月更换一次比较好。在做同时录前视加上后视的产品上,因为存在前后两路视频数据需要存储,这对存储卡的操作就更频繁了。考虑到两个不同线程对同一张卡的操作效率的考虑,两路码率跟一路同样码率大小的产品对比,两路明显需要更多一点的写入时间。很明显的就是,我们在电脑上给U盘拷贝两个东西,我们一个一个拷的速度比两个同时拷的速度还快一点,就是不需要两个互斥同步的时间消耗,另外也是一个批量写入跟两个零散写入的差别。因此,建议在图像足够清晰的情况下,码率尽量低一点,减少视频数据的存储量,选用C10及以上的卡。

刚刚我们已经了解了视频数据源跟写入存储器的一些基本知识,那我们就再从系统的角度来看视频数据的共用。我们知道,行车记录仪的图像可以预览,也可以不预览,但是录像功能在后台都是可以工作的。从效率上考虑,目前预览跟录像使用的视频数据都是同一个buffer的,属于共享的。如果有阻塞会造成行车记录应用出现黑屏的问题,就是预览或者录像未及时释放buffer,造成底层camera驱动没有buffer接收新的视频数据,造成这种堵塞后就预览也预览不了,黑屏满满的,另外录像也不可能正常了。因此,我们需要监控这个视频数据buffer的空闲情况,比如有10个buffer,如果当有8个被占用了,那我们就需要加快消耗的速度,但是加快消耗的速度不大好控制,一般还是控制输入的速度,比如预览的图像我不送那么快了,处理不过来了就不连续送那么多,比如没两帧送一帧,如果还没有效果到更严重时,就要考虑少喂一点视频数据帧给编码器了,这是万不得已的情况了,整个功能异常总比视频数据丢掉一些帧要更糟糕吧,丢也不能丢太多了,比如25帧的,你丟个3~5帧也顶多了,太多了就没意义了。实在不行,我们在buffer即将满的情况下,通知一个消息给DVR应用,暂停一下录像,这个我在前面的文章中也提到过。

另外,在写入数据的地方也是有很多门道的。两路数据的写入尽量隔开一点时间,一般采用固定码率的产品还比较多,这样两路的编码数据写入理论上是有周期的,在这种周期相撞的情况下,软件上控制一下后来的那一个任务稍微延后执行一下,尽量错开,这样SD卡的工作效率也更高一点。笔者在前面的文章中有专门介绍过具体的处理方法。另外还有编码堵塞其实也是可能监测的,如果堵塞了可以想办法发送消息给应用去处理,比如降低码率来降低符和。

当前面的常规方法都还拯救不了DVR的情况下,可以考虑临时性的杀一下mediaserver进程,此方法很有效,也有弊端,极端的情况下这种方法也救不回来,不过这种方法出异常时90%的情况下还是可行的。

除此之外,我们还需要监控一下SD卡的品质,比如是什么样的等级的卡,如果等级低了,我们提醒用户去换更换的卡,减少一些非法拔插SD卡的动作,要警示用户可能导致功能异常。目前在存储上,使用预分配的方法可以获得更好的SD读写性能,相等于分好了一块一块的,这样会减少多次分配的碎片问题,这样效率会高很多。

很多产品只有这个功能的,弄稳定还相对容易一些,在一些功能比较多的产品上做行车记录的功能,要做稳定需要更大的精力跟耐力。系统CPU也是多个任务在共用,CPU轮转不及时就可能堵塞造成功能异常,功能越多越复杂,留给DVR的操作余量要越大。多考虑一下异常情况下怎么做,各个条件都好的情况下,一般的工程师都能做出好产品。很多时候,我们没有那么足够的资源下去干一些相对多的事情,当然需要想更多的办法!

做车载产品不容易,做好车载产品更不容易,前行去珍惜,做好了大家还有口饭吃!加油!

基于android系统DVR稳定性问题分析及对策相关推荐

  1. 基于Android系统的IPv6网络接入分析

                                                                      基于Android系统的IPv6网络接入分析 摘 要:本文深入分析了 ...

  2. android 恢复出厂设置流程分析,基于Android系统快速恢复出厂设置方法实现.doc

    基于Android系统快速恢复出厂设置方法实现 基于Android系统快速恢复出厂设置方法实现 摘 要:针对使用Android系统的智能电视进行恢复出厂设置时重置速度慢的情况进行了研究和分析,从其重置 ...

  3. 基于Android系统的人脸识别签到软件

    项目名称:   基于Android系统的人脸识别签到软件 目  录 1 项目介绍..... 1 1.1 项目背景.... 1 1.2 产品特点.... 2 1.3 可行性分析.... 2 1.3.1 ...

  4. android收入管理系统,毕业设计(论文)-基于Android系统的家庭理财通软件的设计——收入管理模块.docx...

    PAGE 河北农业大学信息学院 本科毕业论文 题 目:基于Android系统的家庭理财通软件的 设计--收入管理模块 学 院: 信息科学与技术学院 专业班级: 计算机科学与技术0902班 学 号: 二 ...

  5. android 系统gpu 调试_基于Android系统的GPU动态调频方案 | Imagination中文技术社区

    针对移动终端上GPU的高功耗问题,提出一种基于Android系统的GPU动态调频方案.方案根据各种应用对GPU的性能需求,引入了GPU的频率一性能模型,包括选择工作频率和测量相对性能的方法.动态调频算 ...

  6. 基于android的检测心率,基于Android系统的心率信息监测软件的研究与实现

    摘要: 近年来,随着工作生活压力的日益增加,各种慢性疾病的发病率持续上升,给人们的健康生活带来很大的影响.为了防止这种情况的发生,对于慢性病的早期的预防与治疗已经成为人们普遍关心的问题.随着科技的进步 ...

  7. android流程点击开机键熄屏,一种基于android系统的灭屏状态下指纹解锁加速亮屏方法与流程...

    本发明涉及android系统解锁显示方法,尤其涉及一种基于android系统的灭屏状态下指纹解锁加速亮屏方法. 背景技术: 目前,随着指纹技术越来越普及,很多android系统设备都带有指纹外设,特别 ...

  8. 基于Android系统的手机游戏(2048)的设计与实现

    目 录 摘 要 I Abstract II 第一章 绪论 5 1.1选题背景及意义 5 1.1.1选题背景 5 1.1.2选题意义 6 1.2发展现状 6 1.3研究主要内容 7 第二章 关键技术分析 ...

  9. android开发 wifi功率,一种基于Android系统的功耗计算方法与流程

    本发明涉及系统功耗 技术领域: ,尤其涉及一种基于Android系统的功耗计算方法. 背景技术: :为了细粒度实时分析系统各部件以及应用程序的功耗特性,并且进一步挖掘用户的日常行为,我们需要建立功耗模 ...

最新文章

  1. 游戏开发中的图像生成
  2. php员工删除,php+mysql删除指定编号员工信息的方法_PHP
  3. php python 混合_php-python
  4. Android开发实战记录
  5. 从零开始系统学习区块链
  6. 【Opencv实战】这是我见过的最强大“美颜滤镜”,代码美颜傻瓜式一键操作~(附源码)
  7. 《数学分析(上)》重要概念复习
  8. 【超详细】QQ空间说说爬取教程(看看你的女神在想什么~
  9. 【解决】计算机用户名是中文名导致软件安装失败!
  10. 数字游戏-SSL 1653
  11. java flyway,Flyway详解及Springboot集成Flyway的详细教程
  12. 不看后悔!新手小白必看的保姆级教程!一篇文章学会数据仓库!
  13. uniapp获取手机可接收的所有的WiFi名称与信号强度
  14. 使用runOnUiThread更新UI
  15. ios中嵌套h5做的app,长按图片默认会有放大效果;如何禁止
  16. A Deep Learning-Based Remaining Useful Life Prediction Approach for Bearings 基于深度学习的轴承剩余寿命预测
  17. 大电影 剧来风 山东方言版 下载
  18. 中国人的数学为什么好,为什么不好
  19. 泰芯半导体MCU开发工具仿真器
  20. Python3.x爬虫教程:爬网页、爬图片、自动登录

热门文章

  1. array splice php w3c,PHP函数整理,php函数
  2. 七、节能篇:多种节能降耗技术并用,超频也无忧!
  3. ubuntu安装飞秋流程和报错处理libiptux-core.so.0: cannot open shared object file
  4. EXFAT文件系统的数据恢复教程-李林峰-专题视频课程
  5. 20150909—Win10系统80端口被System占用
  6. matlab 海浪谱,基于海浪谱模型和FFT的海面建模.pdf
  7. 360随身wifi在win10中连不上网络
  8. HEVC的Merge模式
  9. 正则表达式学习与验证网站
  10. 数字化转型案例失利的3大原因 by 彭文华