云游戏扫盲—1

作者: 传输技术控 | 来源:发表于2021-06-27 11:17 被阅读0次
    (图片出自网络,版权归原作者所有)

    云游戏作为一种最能体现5G性能的应用,成为近一两年来最热门的话题。

    但要详细问起云游戏是如何实现的、它的架构大致是什么样的、里面都有哪些难点,却并不是大家都很清楚的。今天我就来和大家分享一个非常简单的PPT,和大家交流一下。

    我们会分为五个部分来讲:

    1、架构:主要和大家分享云游戏的架构,这里我清除了业务的干扰,直接和大家来说明云游戏的架构是怎么样的。

    2、采集:主要和大家分享云游戏如何实现音视频的采集,以及采集的时候所常用的一些参数。

    3、传输:云游戏中耗时最多、可变程度最大、也是最重要的部分那一定非传输莫属。传输这部分我会讲一下当前行业是如何做的,开源的项目都有哪些。

    4、展现:云游戏最后的一部就是在用户端进行展现了,展现的时候会有一些展现的技巧,例如是否需要音画同步等,这部分会涉及到。

    5、难点:通过上面4部分,就完全可以了解云游戏的实现过程了,最后一部分会和大家分享一下云游戏开发过程中会涉及到哪些难点以及如何解决。

    首先我们来看看第一部分:架构

    大家通常看到的云游戏的架构往往是这样的:

    ( 图片出自网络,版权归原作者所有 )

    从图中可以看出,架构中很多部分,只要是做互联网的产品都是不可或缺的。例如账号系统、积分系统、充值系统等。对于这些和云游戏无关的内容,我们剔除掉,留下只和云游戏相关的部分。

    那么我们得到的云游戏架构将会是这样的:

    惊不惊喜?意不意外?架构好简单!没错,云游戏的架构就这么简单。

    从图中可以看到云游戏有两个方向的数据流转

    1:终端(展现)-》传输-》渲染(采集)

    这个方向的数据流转一般会是用户的操作,其中包括键鼠、手柄、以及触控屏操作等等。终端得到这些操控信息后,会将数据发送给渲染(采集)端。这个方向的数据流转处理方式都是常用处理方式。这里我们不做展开了。

    2:采集(渲染服务器)-》传输(网络)-》展现(用户)

    这个方向的数据流转是今天我们分享的重点,也是云游戏主要的数据流转流程。它从采集端进行音视频数据的采集、通过传输将数据传送给用户、用户拿到数据后在终端(手机、PC、WEB、PK机)上进行展现。

    我们先来看渲染(采集)

    采集目前具有非常成熟的方案,通常采用FFMpeg来获取渲染服务器的音视频数据。

    怎么采集?这里就不赘述了,要说的详细估计需要好几篇文章来说了。大家可以去网上找找这种文章,网上这种文章非常多。

    在采集的时候,有一些重要的参数大家可以注意一下。

    分辨率:视频的大小,我们通常所说的720P、1080P、4K等都指的是分辨率。其中P的意思是“视频像素的总行数”,K的意思是“视频像素的总列数”。720P指的是1280×720、1080指的是1920×1080、4K指的是4096×2160或者3840×2160。

    帧率:每秒钟位图图像连续出现在显示器上的频率。帧率越大,画面越流畅;帧率越小,画面越有跳动感。我们通常说的30帧、60帧、100帧,所指的就是帧率。

    采样率:采样率是指录音设备在单位时间内对模拟信号采样的多少,采样频率越高,机械波的波形就越真实越自然。通常会用44100、48000等参数。

    其它的例如GOP之类的我们就不展开了。

    采集完毕后的数据会比较大,尤其是视频数据。这时需要对这些原始数据进行编码处理。

    编码的时候分为软编码、硬编码。

    软编码:采用CPU来进行编码。

    硬编码:使用非CPU进行编码,如GPU、专用DSP、FPGA、ASIC芯片等等。

    至于如何实现软编码、硬编码,内容实在太多,这里就不做赘述了。

    编码的时候我们通常会注意几个比较重要的参数:

    一个是视频编码格式。

    这个格式一般是H.264、H.265(HEVC)、VP8、VP9等。采用不同的视频编码格式不仅会对机器产生很大影响,而且也会对后面的传输产生很大影响,自然也会影响到用户端的展现上。

    理论上H.265编码后的数据会比H.264编码后的数据理论减少50%的空间占用。这在后续的传输中非常重要。

    另一个是视频码率。

    数据传输时单位时间传送的数据位数,单位为kbps(kilobit per second)。例如我们说的700码率,一般指的是700kbps。码率是非常影响视频画面质量的一个参数,我们想要高质量的视频画面,就需要有非常高的传输数据量,码率就会高很多。目前云游戏的码率会根据不同的游戏、画质来确定。例如车枪球类的游戏,码率相对高一些。卡牌类游戏、没有大幅度动作的游戏,码率少一些。

    至于CBR、VBR等等参数我们这里就不提了。

    上面介绍的都是视频的相关参数,而音频的编码参数就简单很多了,通常采用AAC或者OPUS。

    编码是整个采集部分的核心,采集性能的高低、效果的优劣会直接影响到云游戏用户的体验。

    对于编码后的数据怎么处理,这里存在两种分歧,各有利弊。

    第一种:对编码后的数据(视频数据、音频数据)进行封包处理,形成一种统一格式的数据包。例如ts文件格式。

    优点:可以进行文件保存,方便后续业务(点播、回看等等)的使用。这是标准的音视频处理方法,因此可以被普通播放器正常播放。后续通过CDN进行分发,也有非常成熟的方案和厂商(阿里云、腾讯云、华为云等)。

    缺点:封装的时候有可能造成一定的时间消耗。封装后的数据在展现的时候通常需要考虑音画同步的事情。

    通过以上的步骤,我们可以得到采集后的音视频数据(或者封装后的数据)。下一章我们来分享整个云游戏中最为核心的内容——实时传输。

    相关文章

      网友评论

        本文标题:云游戏扫盲—1

        本文链接:https://www.haomeiwen.com/subject/ucxxultx.html