0%

新闻资讯

拥抱变化,赋能产业互联时代

视频编解码技术应用浅析(一)

2023-07-27

                视频编解码(Video Codec)是一种将视频信号转换为数字信号的技术。它通过压缩视频数据来减少存储空间和传输带宽的需求。视频编解码器通常由两个部分组成:编码器和解码器。编码器将原始视频数据压缩,并生成一个压缩后的文件。解码器读取压缩文件,并将其还原为可供播放的视频。常见的视频编解码器包括H.264、H.265、VP9等。这些编解码器具有不同的压缩率、编码速度和解码性能,可以根据不同的应用场景进行选择。

            简单的数据传输链路如下图1所示,远程的服务器上存储着许多信息数据,通过网络传输到本地用户的终端设备上。其中视频流数据传输是尤为重要的一部分,流畅高清的视频播放才能给用户带来愉快的体验,如果观看直播的话对实时性还有要求,视频流传输涉及的方面还不仅如此,那么接下来我们来简单了解一下。

未标题-3.png

图1 数据传输链路

            正如上面提到的,视频流数据要在网络中传输,而能在网络中传输的数据都应该要进行压缩编码,这是由于原始的视频数据体积太大,动辄就大几十个GB,如果要让这些数据进入网络传输到你的终端设备上,那你看的视频就要是卡成PPT,或者一直提示数据加载中,相信你会有砸掉终端设备的冲动,这里的终端设备可以是笔记本电脑、平板电脑、手机、台式电脑等。因此我们需要对这些视频数据进行编码,如下图2所示,数据经过压缩后体积减小,这样就便于在网络中传输了,而视频编码技术发展了这么多年,编码算法也是不断推陈出新,现在常有的编码算法有H264、H265,以及最近很火的AV1等。视频流数据首先通过编码器压缩后,经网络传输到用户终端,终端设备再通过解码器将压缩数据还原展示给用户,用户播放视频通常分为本地播放和在线观看。

未标题-4.png

图2 视频流数据编码

本地播放

            在从前,人们观看视频通常会将视频文件下载下来,然后在自己的终端设备上播放,就像现在的视频缓存一样,提前把视频内容下载好,这样就不会受网络的限制了。下载好的视频文件后缀格式一般为mp4、avi和flv等,这其实是一种视频容器格式,容器内部存放着压缩后的视频流和音频流数据。人们平常使用视频播放器观看视频时,其实就是通过播发器把视频文件这个容器打开,取出内部的视频流和音频流数据,如下图3所示。

未标题-2.png

图3 本地视频播放

            播放器取出容器中的编码数据,再通过解码器将其展现出来,视频流数据输出到显示屏幕上,音频流数据通过喇叭播放出来,如下图所示4所示,在电脑中,解码可以通过CPU进行,也可以通过专业的硬件解码器进行解码。

未标题-3.png

图4 解码过程

视频流在线播放

            除了本地文件播放外,还有视频流在线播放,常见的有云游戏、直播和安防监控摄像头内容显示等,如下图5所示。看到这里有点人就要感到奇怪了,为什么云游戏还能扯到视频编解码呢?其实是因为,云游戏其本质就是在云端架设服务器,游戏本体在云端服务器上运行,把云端画面回传给用户终端设备,这其实也是视频流。

未标题-4.png

图5 视频流在线播放

            云游戏架构图入下图6所示,服务器端有海量的硬件资源提供给用户使用,这样用户就不会受终端设备性能的限制,体验到许多3A大作了。可以看到服务器端会在硬件资源的基础上通过虚拟化管理平台创建很多虚拟机,虚拟机可以运行不同的OS平台,把虚拟机提供给用户使用,在虚拟机上面运行用户的游戏,使用服务器资源将游戏画面渲染好后再将游戏画面进行压缩编码,以视频流的方式推送给用户终端设备,终端设备解码后将游戏画面展示给用户,用户再使用键鼠或触屏输入把游戏操作指令回传给服务器端的虚拟机,以此循环,让游戏玩家体验到优异的游戏体验。

未标题-5.png

图6 云游戏方案架构

            服务器端硬件资源如下图7所示,有很多4U服务器组成,每台服务器中可以插许多的显卡用来对游戏画面进行渲染,显卡可以通过vGPU切割避免用户间的资源竞争,将切割出来的显卡资源单独分配给虚拟机使用,磁盘阵列用来存储用户操作系统,这样可以在其中某台服务器出现问题时,将用户数据资源漂移到另一台服务器设备上,满足高可用性,下列的ESXI和vCenter是目前全球桌面到数据中心虚拟化解决方案的领导厂商VMware旗下的产品。

未标题-6.png

图7 虚拟化层

            AI安防是在常见的监控画面中通过使用人工智能技术对画面中的人或物进行各项任务操作,如人脸识别、行人跟踪和目标检测等。如下图8所示,为了对多个摄像头操作,会通过一个POE交换机将各个摄像头通过网线连接起来进行数据传输,POE交换机其实就是一个能给摄像头供电的网络交换机。通常的监控摄像头配套设备还会有一个刻录机将POE交换机里的数据进行保存,方便后续录像的观看,而下图中因为设计人工智能技术,所以使用的是一个部署在边缘端的工控整机,通过把神经网络部署在该设备上,实现对输入数据进行分析和各项操作,最终在输出结果到监控中心的大屏上。这里我们做一个简单的回顾,摄像头采集外部信息数据,并在摄像头的编码芯片上进行使用H264或H265等编码算法进行数据压缩,数据经网线传输到POE交换机上,这样让数据出于同一个局域网中,再把工控整机连到POE交换机上获取压缩数据,使用工控整机上的解码器对压缩数据进行解码,对数据进行还原,再将图像数据作为输出提供给神经网络模型,模型输出结果传给外部显示器。值得注意的是,工控整机上的解码器使用的不应该是CPU,而是专用的硬件解码器,因为多路摄像头只使用CPU作为解码器的话,会出现CPU使用率100%,且解码性能低下,不满足实际需求,因此需要使用高性能的硬件解码器,而正如之前文章提到的,在NVIDIA显卡的内部就专门存在这样的编解码单元NVDEC和NVENC。

未标题-7.png

图8 AI安防监控

            上述AI安防监控也可以泛化到其他应用场景如视频直播等,直播用户通过手机上的摄像头把数据传输到远程服务器上,再通过服务器把直播视频传递给其他用户观看。

            如果对于编解码技术感兴趣,想要深入了解,可以阅读后续的相关文章。