基于国产化通用算力平台的播出信号编码压缩系统关键技术研究与应用实践

原创 《现代电视技术》编辑部

作者:中央广播电视总台 刘博

摘要

播出信号编码压缩系统是广播电视台安全播出的核心系统。本文聚焦播出信号编码压缩的国产化、IP化和IT化应用,构建基于国产化通用算力平台的SDI/IP信号的编码压缩系统,重点解决视音频编码的容器化管理、资源灵活调度,构建多级自监测和自动备份切换机制,满足安全播出高要求,探讨广播电视节目高可靠国产化编码压缩应用的IP化解决方案。

关键词



国产化|编码压缩|容器|集群|备份切换机制

播出信号编码压缩是广播电视台节目制作分发的最后一个环节,播出信号编码压缩系统是安全播出的核心系统。目前国内的广播电视台通常采用专用的广播级高质量编码器实现一对一的编码压缩,但在面向融合媒体不同平台分发时,多分辨率、多码率、多格式输出需求导致系统设备量大、投资成本高。另一方面,在IPTV节目集成平台和有线电视节目集成平台中,基于通用算力资源的编转码系统应用愈加成熟,编码质量、系统稳定性不断提升,设备投资性价比高。

在计算机技术飞速发展的今天,广播电视领域的IP化技术和产品应用加速发展,特别是进入4K超高清阶段之后,产业界的采编播各环节都在积极拥抱IP化技术,传统信号处理设备也从专用硬件向基于通用算力资源的虚拟化部署转变,以此来提高硬件资源的利用率及调度灵活性。作为节目制作播出的最后一个环节,播出信号编码压缩系统的IP化应用有助于打通节目生产的IP化全流程,减少接口转换带来的成本增加和安全风险。由此,在确保播出安全的前提下构建一套基于国产化通用算力资源的编码压缩系统,建立有效的管理、分配和资源调度机制有助于广播电视融合化发展。

面对上述需求,业界通常采用服务器集群的虚拟化技术实现。从虚拟化部署的方式来划分,通常采用虚拟机技术或Docker容器技术来进行搭建,尽管虚拟机技术在资源隔离和多用户环境中具有更高的可用性,但与Docker容器相比,虚拟机的启动及反应速度较慢、资源消耗较高。而Docker容器技术将应用程序和其依赖项打包成独立的容器,这些容器可以在不同的环境中运行,通过一个操作管理平台进行统一调度分配,无需担心依赖项或配置的冲突,更加轻巧、快速、占用资源更少。在播出信号编码压缩系统应用中,通常要求系统稳定、多任务编码延时一致、自动倒换后快速恢复编码输出。此时采用Docker容器技术建立编码压缩系统,可将各个编码节点看作独立容器,各容器分别完成一套完整的编码功能,可以确保不同编码任务的资源独立,满足延时稳定和一致性要求。同时,通过集群控制器统一管理,在集群总计算能力有限的前提下,根据实际需求形成N+M的灵活备份机制,保障播出安全。

本文拟通过Docker容器化技术和基带信号IP化接口设计一套支持多套播出节目编码压缩复用功能的全国产化的编码压缩系统,其视音频编码部分基于通用算力资源,使编码环节可以按需实现N+M的任意备份机制,编码、复用、输出各环节均可实现自动故障检知和倒换,满足安全播出的要求。

一  系统总体架构

系统由信号输入、视音频编码、复用加扰、切换输出四部分组成,四部分全为国产化设备。其中,信号接入环节通过网关设备将SDI接口的播出信号转换为SMPTE ST 2110接口的信号,每路信号通过接口转换设备后输出符合SMPTE ST 2022-7标准的主、备IP流信号;视音频编码环节由通用交换机、编码资源池、编码集群控制器组成编码集群组,承担该系统的视音频编码压缩任务;复用加扰环节包含主备复用器设备,完成节目流复用、加扰等处理工作;切换输出环节由主备ASI切换器和IP切换器设备组成,完成系统最终的复用节目流切换输出。编码、复用、切换各环节均配置了主备设备,可实现设备级、码流级的故障自动检查和自动冗余倒换。系统总体架构如图1所示。

图片图1 系统总体架构

二 系统关键技术研究与实现

1.基于Docker容器的池化编码技术

编码资源池集群组中所有的硬件设备均通过控制交换机接入到集群管理器上,集群管理器使用集群技术对部署在编码资源池集群组中的Docker容器实现统一管理,包括设备管理、业务配置以及系统备份机制、策略的自动与手动调整等。

为提高编码计算资源的利用率,编码资源池集群组使用了Docker容器镜像优化技术。Docker容器镜像是运行环境、代码文件和配置文件等文件的整合,作用是快速启动Docker容器并完成任务部署。在Docker容器使用过程中,可以直接从客户端向服务器发送请求,从而管理Docker容器集群的资源和相应镜像仓库中的各类镜像资源。本系统使用轻量级基础镜像,并分离构建运行环境。系统运行时,可通过Dockfile文件生成镜像,该文件包含运行环境、代码文件、配置文件等。容器是镜像的运行实例,通过指定镜像启动,而且容器之间默认相互隔离,不会相互影响。

以此技术构建的编码资源池集群组可使各实体硬件资源的计算能力得到充分利用,每台编码器的硬件资源虚拟为通用的编码资源能力,由集群控制器统一管理调度,充分提高整系统的资源利用率。同时对于各台独立编码器资源可进行任务的设置迁移、灵活增删、方便扩容,解决原有一对一的编码压缩系统的固定化问题,省去繁琐的设备重置、组网重组过程。

图片图2 Docker容器技术架构图

2.核心复用及切换调优技术

核心复用功能部分采用了有万兆接口的复用器设备,主要是考虑到了与编码资源池集群组的松耦合性,伴随着编码资源池能力的不断提高,万兆接口复用器可以适应未来更多信源的平滑扩容接入,复用器设备也可以实现端口级、节目级的多种备份需求。

输出切换功能部分采用了支持断电直通的切换器设备,支持I帧切换功能,进一步提高了节目播出的安全性。为配合编码资源池集群组的增删扩容能力,后级的输出切换设备采用了松耦合设计,可以根据实际输出的节目流数量灵活配置切换能力。

图片图3 系统详细连线图(复用+切换)

为了缩短备份任务的启动时间并优化任务切换的效率,系统引入了预加载技术。这项技术的核心在于集群会提前初始化一些编码任务,使其处于一种等待载入的待命状态。当备份任务需要进行迁移时,系统无需从头开始初始化任务,而是可以直接利用这些已经预加载的编码任务。此时,只需简单地载入任务的输入和输出参数,并开启输出开关,任务即可迅速启动并开始执行。这种预加载机制大大减少了任务启动的响应时间,使得设备能够更快地响应备份需求,从而显著提高了整个系统的应急倒换效率。通过这种方式,系统能够更加灵活地应对各种备份任务的迁移需求,确保数据备份的及时性和可靠性。

通过实际测试,记录了各种情况下的应急倒换时间。由于单台编码器运行多个进程,测试项目1和2的倒换时间为所有进程倒换完成的时间。

图片表1 系统倒换时间

3.编码集群的备份和冗余倒换机制

视音频编码部分采用Docker容器技术,编码资源由集群控制器统一管理,可以按需灵活配置编码任务和冗余备份机制。本系统设计了完备的编码集群备份机制,包括输入备份、任务备份以及设备备份三个层面。集群控制器统一搜集设备告警、任务和进程告警等信息并进行综合判断,按照预设逻辑自动执行编码任务在备份容器资源上的迁移倒换。

(1)总体备份机制

根据节目的重要程度,编码任务的备份方式分为1+1和N+M(N>M)两种备份方式。

◆1+1备份:为最高保护级别,主备编码任务占有固定的通道资源,二者均处于正常接收信源并编码的状态。当需要任务迁移时,关闭异常任务的输出开关,并开启备份任务的输出开关,即可完成主备任务的切换迁移。该方式下可保证最快速度恢复故障信号的编码输出;

◆N+M备份:N个编码任务共享M个备份资源,当同一时间需要迁移的任务数不大于M时,可以建立备份任务;当同一时间需要迁移的任务数大于M 时,最多只能保证建立M个备份任务。对于N+M 备份方式的任务,可以设置优先级,优先级有“高”和“低”两个级别。对于同一时间发生故障的任务,保证优先级为“高”的任务能优先建立备份任务。

(2)任务备份机制

编码器每路任务分为输入、编码、输出三个独立进程,每个进程崩溃不会影响其他进程,有效地提高了安全性。

编码任务内置监控告警模块,监控输入源状态、编码任务运行状态、视频输出和音频输出状态。监控模块与集群控制器通过心跳和告警两种方式进行数据交互:当任务正常运行时,定时向集群控制器发送心跳信号;当任务运行异常时,触发编码器告警。编码器将告警通知到编码集群控制器,同时集群控制器定时查询编码器运行状态。集群控制器根据心跳、告警和系统状态进行综合判断,如果确认任务异常,则执行任务迁移,并在集群页面上显示异常状态和告警。

当触发任务迁移时,集群控制器根据负载均衡逻辑找到当前编码器池中可用的资源,下发任务启动命令,并使用异常编码任务的参数进行配置,同时给异常编码器下发该任务的终止命令,并创建主备任务间的关联关系。

为了减少备份任务的启动时间,提高切换速度,集群中会预初始化若干编码任务,当任务迁移时,仅需要配置输入/输出参数,并打开输入/输出开关;当同一时刻迁移任务的数量超过预初始化编码任务的数量时,超出的备份任务则执行完整的初始化,切换速度会降低。

图4 编码任务备份机制示意图

4.基于全国产和信创平台的性能调优

本系统的全部设备,包括编码集群、复用加扰器、ASI切换器和IP切换器,均为国产品牌设备,此外还配置了国产统一监测管控系统,对系统内的信号和设备运行状态进行实时监测。在基础IT平台环境上,主、备系统采用异构设计,对信息化创新应用开展了有益尝试。其中主系统服务器使用Ubuntu操作系统和MySQL数据库;备系统使用OpenEuler操作系统和优炫数据库。

聚焦国产化平台的基础IT环境,从系统功能需求出发,完成了围绕国产操作系统的多项调优工作。国产操作系统在性能方面存在线程调度策略平均、中断处理耗时抖动等问题,不利于实时编码类软件性能的释放,从而导致指标无法达到最优。针对操作系统的实时性进行调优,使得操作系统下的软件计算结果不仅正确,而且及时。

◆针对操作系统内核的调优。对于内核中的进程和线程调度策略进行针对性优化,加大实时线程的调度权重,使接收发送、核心编码计算等线程能够稳定占用CPU核心的时间片,降低线程切换导致的性能下降。经过内核调优,编码性能得到大幅提升,测试单路极限编码帧率由每秒35帧提升至每秒52帧,同时TS发包间隔抖动由13毫秒降低至1毫秒以内;

◆针对中断处理的调整。将非实时中断和实时中断处理的线程进行分离,对于ST 2110网卡数据包接收这类非实时中断,进行CPU核心的亲和性设置,与实时中断处理线程隔离开,使其不受实时中断或者工作负载的干扰。中断处理调整后,实现了ST 2110 接收模块的延时抖动从毫秒级降低到微秒级,大大降低了对数据缓冲区的冲击;

◆针对内存管理机制的优化。将核心软件的虚拟内存与物理内存进行锁定,避免被操作系统交换而导致的访存性能下降,大幅减少访问内存时的页错误。内存管理机制优化后,编码过程中的轻微页错误由平均每秒107次下降至每秒23次,编码性能提升每秒4帧。

经过以上三点针对性优化,国产OpenEuler操作系统能够完全适配实时编码应用软件,编码指标取得了巨大的提升,运行稳定性也得到了更加可靠的保障。

三 结语

相较于专用广播级高质量编码器实现一对一编码的传统编码压缩系统,基于Docker容器技术的集群编码资源池更加灵活,在设备级、节目级备份切换中可通过集群控制器进行统一资源分配调度,大大提高系统的灵活性;较传统架构的1+1或N+1备份机制,本系统的N+M备份机制中,N与M是可灵活调整的,且系统可设置N+M备份的优先级策略,可为不同要求的节目设置多种优先级选择;而对于最高级别的节目采取1+1的备份方式,占用固定的备份资源,始终保障最高级别节目的安全播出,且实际使用时最高级别节目的备份资源也始终运行,在故障发生时能够做到更快速地切换。

基于Docker容器技术的集群编码资源池充分发挥了IP信号的灵活性和IT资源的弹性优势,也为多种完备安全策略的实现提供技术支撑,这使得其在广播电视行业的编码应用领域诞生了新的应用场景。随着IP化应用的不断深入,广播电视领域全IP时代即将到来,IT化资源池的应用也将进入高速发展期,这将助力广播电视行业形成更多的创新应用,打造更便携、更灵活、更丰富的视听未来。