云视角下的视频编码:从虚拟化走向容器化

Posted 媒矿工厂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云视角下的视频编码:从虚拟化走向容器化相关的知识,希望对你有一定的参考价值。

云计算是一种基于互联网的计算方式,共享的软硬件资源和信息可以按需求提供给计算机各种终端和其他设备。在云计算环境下,软件即服务(SaaS)的虚拟化平台成为主流,视频编码服务也受到影响,逐渐转型。

容器技术为提升云计算性能和效率开辟了新的可能性,非常适合计算复杂度高,可拆分的任务,也为视频编码带来了新的动力与生机。本文首先简单对比了容器技术与传统虚拟化技术,然后介绍了针对视频编码的通用容器化思想并分析其优势。最后,结合某些具体的视频编码应用场景,给出特定的适合的容器化解决方案。

1. 容器与虚拟机的区别

服务端技术近年来一直处于急剧发展的状态,架构师和系统工程师也在不断努力,以简化和优化他们的工作流程,提高产品的性能。虚拟化技术是服务端技术的主要突破之一,长久以来已经成为IT领域的重要组成部分。基于虚拟化技术,一个服务器上可以运行多个虚拟机,每个虚拟机拥有自己的操作系统,与其他虚拟机间相互独立。通过这种方式,IT部门已经能够更好地利用硬件资源并优化负载管理。

图1:虚拟机与容器对比

容器技术使虚拟化技术更进一步,它允许应用程序在专属的环境中运行,而这些环境由操作系统内核托管。通过使用共享的操作系统内核,容器具有良好的可移植性和扩展性,在资源消耗上也更加轻量。这使得容器成为比虚拟机更加强大的解决方案,也令其能完美地适应云计算的基础架构。虚拟机与容器的对比如图1所示。

首先,每个容器运行都不需要额外的外部依赖环境,因此开发者可以不受操作系统的限制而完全控制其应用程序的运行环境。此外,这种独立性确定了容器内的环境在任何地方都是一样的,无论其被运行在公有云,私有云还是本地测试机中。

容器会共享操作系统的内核,因此它比需要自身操作系统的虚拟机轻量得多。这使得在云上扩展容器集群十分容易,因为它们占用的资源更少。容器对CPU、内存及存储的利用也更加高效。所有的这些特性使得容器化的解决方案能够快速初始化与响应,通常可以在秒级内大规模部署和扩展。

2. 容器化视频编码

在容器化视频编码方案之前,大多数编码系统采用线性的方法进行工作。它们通常的流程是输入一个视频,从头到尾进行编码处理,再按照时间顺序将每个片段写入编码的配置文件。通过测试,根据标准码率阶梯进行编码,在8核机器上使用FFMPEG或类似的解决方案,编码实时因子通常是0.3x到1.0x之间。

自适应比特流的本质使其非常适合容器化方法。在视频编码服务中可以充分利用容器的水平扩展能力。这种水平扩展使我们能够分别对视频到不同片段同时进行编码,并且可以跨越多个容器实例传播单个视频文件。这样做对直接效果是,通过增加容器化编码实例,一个视频编码工作可以更快地完成。通过简单的水平扩展,可以将编码实施因子提高到100x甚至更高。容器化编码与传统编码的对比如图所示

云视角下的视频编码:从虚拟化走向容器化图2:传统编码与容器化视频编码

除了加速,容器化方案还有其他非常重要的优势:通过分片完成编码,一个原本很大的进程被分解成多个小进程。如果我们将其与容器化带来的机会结合起来,那么完全可能重新定义编码工作的流程,以更好地满足特定商业模式的特定需求。

2.1 适应本地、云及混合云

利用公有云上大量的可用资源只是容器化编码的开始。使用真正的基于容器的编码服务,可以在公有云、私有云或两者上同时运行相同的环境。这需要全新的资源管理方案,因为不再需要决定是在本地还是云端运行某一服务。容器化系统的特性使我们可以创建一个统一的基础架构,将同一个系统中的两个区域合并在一起。可以根据需要在本地和云端进行切换,如本地资源因资源过多而溢出时,可以将溢出的任务推送到公有云中;或是在本地处理那些需要保留在防火墙后面的敏感数据。

2.2 适合利用竞价的实例

竞价实例是节省资金的好方法,亚马逊已经将其变成一个市场驱动的系统。用户可以通过出价,来竞标可用的实例。在这种情形下,出价较低会导致实例可靠性得不到保证。一个出价更高的投标人可以在不通知的情况下拿走实例。在线性工作流程中,这种情况会导致所有的编码丢失,而不得不从头开始。但在容器化工作流程中,失去一个实例几乎是微不足道的。被打断编码的分片会被传送到另一个实例的其他容器,而整个作业会继续进行而没有明显的中断。

更进一步,我们甚至可以根据市场的发展来混合和匹配实例类型。编码协调器控制每个编码作业并将视频分片分配给实例,因此可以放置在价格较高的实例上,以确保其稳定性;工作实例则是编码作业发生的地方,实例之间可以互换,因此可以放在成本较低,风险相对较高的实例上。

2.3 安全性

容器化编码方案适用于虚拟私有云(VPC)设置,客户可以使用其AWS、Google云、Azure云等账户登录。这对于企业来说确保了媒体文件永远不会离开其VPC,而同时又具备基于云的SaaS编码服务的所有功能和可扩展性。这对于敏感内容和需要高度安全的工作流程是非常有用的。 

云视角下的视频编码:从虚拟化走向容器化

图3:容器画视频编码的安全性

2.4 硬件解耦合

容器技术的特性使容器化系统在任何标准化的硬件上都可以运行。这在视频编码的场景中会带来很大影响。到目前为止,在本地运行视频编码服务的公司都需要大量投资专用的硬件编码器。这些硬件的购买和维护都十分昂贵,往往还需要一个专门的团队来维护。最重要的是,这些硬件很不灵活,通常难以升级以适应新的编码技术。容器化编码使得用标准服务器替换这些专用的硬件成为可能。这使公司不仅能有效利用现有的硬件基础设施,而且可以将编码流程转移到一个更加标准的工具集中,并集成到IT团队或其他部门。

2.5 速度与灵活性

多数情况下,编码器的速度是重要的,如在视频直播、用户内容生产、将大型VOD库推向市场等。而容器化更为重要的方面是其适应形势的能力。每项业务都是不同的,并且都需要稍微不同的编码解决方案。此外,每一项业务都会发生变化,编码系统的要求也会随着时间的推移而变化。

容器化创建了一个多功能的解决方案,编码可以进行在本地,也可以在云端,甚至可以在两者之间。容器可以在不同区域(不同的公有云、私有云及本地)之间实时迁移,以适应安全性等各种不同的需求。其“控制器-工作者”模式允许在工作流程中构建条件,以实时优化系统,降低成本并减少错误。总之,容器化视频编码具有无限的可能性。

3. 容器化视频编码用例

3.1 容器化可分级编码

为了适应变化的网络条件及用户终端需求,视频提供者往往需要提供不同分辨率、码率的视频流。传统的做法是在生产时将视频编码成若干版本,在用户请求视频时,通过网络的边缘节点将请求发送给中心服务器,获取相应版本的视频后通过边缘节点传输给用户。这样的生产模式存在两个问题。首先,中心节点在用户请求高峰时段必然会产生巨大的网络压力,因为不同版本的视频需要发送给不同的用户,极大占用网络资源,即便通过边缘节点预测缓存的方式,也很难保证存储资源和带宽资源的平衡;其次,预先编码的版本不一定符合所有用户的需求。

容器化视频编码可以为这一场景提供合适的解决方案。

图4:容器化视频可分级编码

容器化视频可分级编码示意图如图所示。首先,中心节点的容器将视频源编码成一个基本的码流,码流中仅包含必要的帧内预测编码;除此之外,还输出包含运动矢量等必要编码信息的附带信息。这些信息随同帧内预测码流通过高速局域网传输到边缘节点缓存。当用户请求特定版本的视频时,控制器可以在边缘节点启动编码容器实例,利用缓存的码流和编码信息快速进行二次编码,形成用户需求的版本;而完成编码工作后,可以快速停止容器以释放内存和计算资源。

这样,结合容器技术和边缘计算,可以更加灵活地完成视频可分级编码。

3.2 视点相关VR编码

VR传输中,通常会从多个源提取适当的HEVC块并且将它们组合成单个比特流,并根据用户的观看点来动态地生成和传递。用户正在观看的区域码率很高,而用户没有关注的区域的码率则相对较低。在这样的场景中,需要预先编码不同码率的视频源,造成大量的数据冗余。

而通过容器化视点相关的VR编码,每个区域的码流可以通过不同的容器化实例进行编码,目标码率可以根据用户的观看点进行控制,以提高自适应的灵活性。区域用户目前未观看的目标可以分配较低的码率,而区域用户当前正在观看的目标则应分配很高的码率。此外,还可以根据用户的习惯进行更灵活地适应,比如经常切换视角的用户,在编码时应为视点周边区域留下较高的码率以避免突然的视角切换造成的模糊、眩晕;而不经常切换视角的用户,则可以将周围区域的码率调至极低以节省带宽。

4. 总结

容器化技术为云计算带来了新的动力,容器安全、灵活、可扩展,可以更好地适应DevOps模式。容器化视频编码相比于传统的编码方式,具有独到的优势和更为广泛的应用场景。

除视频编码外,容器化技术还可以应用到视频转码、计算机视觉等领域,为媒体分析与处理提供支持。



以上是关于云视角下的视频编码:从虚拟化走向容器化的主要内容,如果未能解决你的问题,请参考以下文章

云原生视角下的开放网络

ffmpeg如何从url获取视频帧数据

拥抱智能,AI 视频编码技术的新探索

拥抱智能,AI 视频编码技术的新探索

拥抱智能,AI视频编码技术的新探索

拥抱智能,AI视频编码技术的新探索