提到云串流或者云推流很多人可能和游戏关联起来,其实这个技术的应用领域不仅仅是游戏,还有云上旅游、考古、智慧园区、智慧城市、虚拟仿真等等行业。其解决的问题是将一些大型的3D应用程序放在云端,程序在运行的时候也是在云端,这样用户侧的前端就不需要考虑什么配置的问题。
从技术角度来阐述云推流/串流过程是:用户指令输入、服务器上3D应用接收到指令执行、将程序执行过程进行记录编码、网络传输、前端接收和播放。整个过程均是在毫秒级,对用户来说是无感知的,和本地安装3D应用使用操作完全一样。本质来说就是完成视频流在网络上的低延迟传输,尤其是和3D应用的结合也有很多时候称之为实时云渲染技术。
实时云渲染整个链路环节分为多个模块,那每个模块都达到尽可能低的延迟,才能保证各个领域的低延迟。这就牵涉比较专业的各种低延迟策略了。这里以前端用户的视角做简单的说明,我们知道不同的画质要求的带宽是不一样的,就像我们看视频的时候会有高清、标清、超清、4K等,如果是网络好的情况下这些画质都没有什么影响,但如果在弱网环境下就需要多种的网络调节策略,比如在带宽达到一定的阈值就要自动调节画质,在网络恢复时在自动调节回原来的画质。但有时候流畅可能并不是唯一的参考标准,如果对于画质要求就是比较高的,那就需要采取其他的低延迟策略。不过从实际使用的角度来说,保证使用时的流畅性是云推流/串流首要考虑的。
那这些3D应用在使用云推流方案时,对于服务器和前端的参数配置,有什么要求呢?这个问题其实不是云串流软件的要求,是3D应用本身对于服务器参数的要求,虽然实时渲染时需要对视频流进行编码,但是这个对CPU和GPU的占用是比较低的。在整个技术方案中,对服务器显卡以及CPU依赖比较大的是3D应用本身。因为推流技术本质上,并没有改变3D应用运行需要的硬件算力,让3D大型应用能在服务器上,流畅跑起来是推流的前提。对于前端的参数就没什么要求了,因为本身程序都是跑在服务器上,前端只需要解码播放即可,对于普通用户来说判断的准则就是能看1080P的视频就可以。
这个技术方案在实际使用中,如果是自己研究需要花费大量的时间和精力,而且在实际应用中要面临各种问题。如果不是有专业的团队,来做该项技术的持续研究和挖掘维护,有点得不偿失,不如直接选择已有的云串流厂家的方案。