浅析云控平台画面传输的视频流方案

背景

ARC(高德车机云控平台)是一个基于车载设备业务深度定制的云控平台,通过该平台我们能够实现远程使用不同类型的车载设备。为了让远程使用者像在本地一样使用车载设备,需要将车载设备的画面及时的传回给使用者。因此,画面传输能力是ARC平台的一个核心组件。

起初我们采用行业内普遍在用的画面传输开源方案(minicap)。该方案获取到屏幕数据后压缩生成JPG图像,逐帧传输到Web端进行展示。由于车机性能比手机差很多,压缩图片消耗CPU性能大,在部分低端车机设备上压缩图片能消耗80%左右的CPU,容易使设备使用出现卡顿。同时图像压缩率不算很高,传输消耗带宽大,在低带宽下造成用户看到的画面过度延迟。

因此,我们需要一个解决方案能够平衡传回的画面质量和车机端的CPU资源消耗。本文将小结本次云控平台画面传输的视频流方案。

思路方法

基于图像数据的基本传输链路,为了能够不消耗设备端CPU资源,首先想到了图像不进行压缩,先传输到服务端进行处理。但是经过调研,车机的USB带宽传输根本无法满足高清图像不压缩进行传输,高清原始数据非常大,基本1秒只能传输三帧左右的数据。

另一个思路是采用设备端的硬件编码器减少CPU资源的消耗。经过调研Android 4.1开始基本都自带了H264视频编码器。因此,决定尝试采用视频流的方案,在设备端通过硬件编码器编码成视频流,通过服务端转发到Web端进行解码展示。

实现方案

整个实现方案可以分为以下三个部分:

  • 设备端:负责画面的获取和编码。

  • 服务端:处理视频流的传输和控制。

  • Web端:视频流的解码和展示。

画面的获取和编码

图像画面的获取直接采用的是Android的Virtual Display。编码方式有多种实现方法:

由于Java方案只能支持Android 5.0以上机器, 而目前车载市场Android 4.x的占比还比较大,无法忽略。因此只能使用cpp的方案,最低可兼容Android 4.3版本。

视频流的传输和控制

Web端最常见的直播方案是rtmp/hls/flvjs等。但是这些方案最低都有1-3s的延迟。对于一般直播平台没有影响,但是对于有实时交互场景的云控平台,要求达到毫秒级延迟。所以,最终决定采用H264裸流通过Socket传输的方案,设备端编码H264视频流直接传输到Web端进行播放。

同时,为了提高使用体验,对视频流的传输增加了弹性控制。通过在服务端加入缓存队列用来监控前端带宽负载情况,根据带宽状况自动调节帧率和码率,优先保证使用者的流畅感。

Web端展示和解码

Web端展示使用media source extensiton(MSE) + fragment mp4的方案, 把H264裸流封装成fragment mp4后,通过MSE api进行解码播放, 具体实现是参考了开源的Jmuxer方案。

丢帧和补帧

默认情况下Android Virtual Display产生的最大帧率是60fps,而我们肉眼30fps就能感觉流畅。为了能够节省带宽,我们定义了视频流最大输出帧率是30fps。在网络带宽较差的情况下,我们还能够降低帧率来最大限度的避免延迟。同时,Android MediaCodec不支持控制帧率,帧率是由每秒送入的帧数量决定的。因此,我们需要通过实现丢帧来进行帧率控制。

Win7硬件解码器没有低延迟模式,需要大概10帧左右数据才能开始播放,而VirtualDisplay是画面有变化才会产生图像帧,因此需要实现补帧来消除解码延迟。

我们通过创建一个EglSurface对丢帧补帧进行处理,通过时间间隔控制eglTexture绘入EglSurface的频度进行丢帧,通过重复绘入最后一帧数据进行补帧。

总结

该方案在ARC平台上的使用,在保证传输质量的同时,有效的提升了使用者操作的流畅感。该方案理论上也可以应用于其他类似的云控平台上,如果不需要支持Android 4.x设备,采用Java层API来获取视频流数据,则可以降低开发和适配成本。

(0)

相关推荐

  • 为什么我抖音拍摄完毕,上传画面变得模糊了

    抖音上传后画质变得模糊,这是因为我们视频上传到抖音服务器去以后,进行了压缩,至于为什么压缩,这个有两个原因,第一,是为了节省官方带宽资源,其次就是为了节省用户的流量,让视频下载过程中更快,实现秒开的目 ...

  • Feem 是一款「全平台跨设备文件传输应用」

    软件名称:Feem(全平台支持) 软件大小:14.7MB(Android) 测试机型:努比亚Z11/红米K20Pro尊享版/Windows10 64位 可用系统:Android/MacOS/Linux ...

  • 直播系统源代码,可能存在延迟的几个原因

    我们现在看到的各直播间并不是只有传输画面和声音的功能,直播系统源代码搭建时涉及的问题比我们想象的要多,并不是简单的技术支持就能完成搭建,搭建时针对不同系统.不同客户端产生的问题,都需要在搭建完成前解决 ...

  • 直播短视频源码,了解开发流程和盈利模式

    用户们对娱乐内容的需求让直播短视频源码的开发变得越来越火热,大大小小的公司纷纷融入,促进了行业内开发团队数量增加的同时,也让行业变得鱼龙混杂起来,越来越多的人加入开发直播短视频源码的行列中,这也让开发 ...

  • 为什么要选择云控系统?

    为什么要选择云控系统?

  • 为何市场上的云控软件价格差这么多

    要想回答这个问题,我们现要搞清楚什么叫云控.云控是一款IA智能软件,作用是可以一台电脑后台可以同时同时控制俩万部手机同时共组,更好节省人工,和提高工作效率,然后在们在来说说价格这方面.市场上这中软件有 ...

  • 什么是云控?

    当下市场比较火的市场,非直播电商莫属了,门槛低,促使很多人去做这个,市场大,发展快,变现快,但是直播间缺乏人气和流量也是让很多商家头疼的事,云控系统是专门针对直播间电商的营销工具,能在很快的时间打造网 ...

  • 云控系统机房搭建的注意事项

    近两年的短视频和直播带货崛起的异常迅速,但直播间的气氛以及人数成为每个主播的短板.但随着资本市场的介入,很多人看到了里面的利益纷纷开始在这个行业找寻自己的位置,有眼光的老板看中了机房搭建这一块.那么小 ...

  • 为何云控得到大家的喜爱?

    其实很多人对于云控这两个字眼很熟悉但又很陌生,为什么会这么说呢?那是因为都很多的人经常会从别人嘴里听到这个词汇,但是它具体是做什么的但又说不上来.下面呢我们就来聊一聊云控到底是什么,它又是做什么用的. ...

  • 数商云电子商务平台开发丨结合技术最大化地创造产品与服务的价值

    近年来,中国电子商务市场持续保持着高度发展.品牌商由初期在平台与渠道商的夹缝中探寻生存法则,到逐渐布局互联网,加强官网与网络旗舰店的销售推广.将产品.组织结构.渠道,还是销售模式都转向线上线下融合,借 ...

  • 阿里云计算有限公司 黄振:基于云原生和中台技术的电网调度云智能平台的研究

    祝贺<电力信息与通信技术>蝉联中国科技核心期刊! 引文信息 黄振.基于云原生和中台技术的电网调度云智能平台的研究[J].电力信息与通信技术,2021,19(3):98-106. HUANG ...

  • Theranostics | 日本大阪大学:一种用于单细胞荧光颗粒酶B测定分析的微流控平台 (1区 IF=8.063)

    编译:暖阳,编辑:十九.江舜尧. 原创微文,欢迎转发转载. 日本大阪大学工学研究所Eiichi Tamiya 和Masato Saito等人于2019年7月24日接收,并将于2020年1月1日在医学国 ...

  • 指挥中心大屏幕光纤拼控终端组合可视化集控平台解决方案

    对于指挥中心等关键任务场景来说,拼接大屏是重要的数据呈现与信息交互平台,大屏处理器则是拼接大屏应用的灵魂,起到将显示信号源集中接入管理.科学管控并在大屏正常显示的作用,都是指挥中心解决方案的重要构成. ...