来源:IBC2021 主讲:Kieran Kunhya 内容整理:赵研 与传统 SDI 等线缆传输方式不同,新的视频流标准 ST 2110 是通过高带宽的 IP 网络发送数字媒体的。作为一种以硬件为核心的标准,ST 2110 对时间控制和同步有极为严格的要求,也因此很难在标准硬件设备上生成相应的数据流。本视频主要对其中的技术难点进行概述。
目录
- 简介
- ST 2110 部署难点
- 高码率问题
- 像素打包问题
- 时钟同步问题:
- 其他问题
简介
随着高清化数字媒体的发展,以 SDI 为基础的传统技术架构已经难以满足发展需求,因此流媒体传输的 IP 化势在必行。但在标准硬件上实现 ST 2110 标准时,会带来以下几方面问题:
- 高数据码率(特别是 UDP 传输流)
- 非常严格的时间同步需求
- 像素打包的数据结构对软件实现不友好
具体来说,ST 2110 标准是将 SDI 信号分为视频、音频、辅助数据这三部分,切片封装到不同的 IP 包,打上时间戳后进行传输。这种音视频分开传输的方式带来了很好的灵活性(当客户端只需要音频/视频时,不需要解读全部数据),但同时也对时钟同步提出了更高的要求:整个广播系统中所有设备的时钟需要对齐。
此外,ST 2110 传输的三支数据流是未经压缩的,因此相应的码率会非常高(视频流往往在 1~10 Gbps,音频约为 10~20 Mbps),一条1080p、50fps的视频,每秒需要传输的数据包高达 200,000 个。
大多数广播视频流采用 YUV 4:2:2,10 bit 位深的格式,而 ST 2110 标准使用了对软件实现很不友好的像素打包格式:"pgroup"(如下图所示),将四个 10 bit 采样点(两个像素)打包成 40 bits 的包。
图1. YUV 4:2:2 pgroup
ST 2110 部署难点
高码率问题
标准 IT 平台的操作系统不适合处理 UDP 数据流,因为与可以批处理数据包的 TCP 协议不同,UDP 流需要系统对每个数据包进行响应和内存拷贝,这会带来很大的开销。
通过使用绕过内核(Kernel Bypass)的方式,可以缓解这一问题。也就是说,程序可以绕过操作系统,直接对网卡(NIC)进行数据读写和视频渲染(该过程类似于播放器直接在显卡上进行视频渲染)。绕过内核的相关实现包括 DPDK, Netmap 和 Registered IO(windows)等。通过这种方式,可以成批传输数据包,由于减少了响应次数,可以带来 10x ~ 20x 的加速比。
采用绕过内核的弊端在于,必须自行实现 IP 栈,包括以太网包头、VLAN、IP 包头、UDP 包头等;并且会失去很多操作系统带来的特性,如防火墙、路由等。
像素打包问题
ST 2110 的像素打包方式如图 1 所示,由于以 10 bits 为单位,各采样点位置不满足字节对齐(1 个字节为 8 bits),因此对软件编程很不友好,即使高效如 C 语言,也很难快速处理这一过程。此外,由于常见的视频流(如 MPEG 流)都为位深为 8 bit,因此还要进行像素格式的二次转换。
为了解决上述问题,这里使用 SIMD 指令进行优化,进而以单指令完成多个数据的运算处理,降低指令数量。在对 4:2:2、10 bit 的 pgroup 进行处理时,SIMD 的速度是 C 语言的 20 倍;若像素位深为 8 bit,则这一加速比为 21x。此外,如果与'绕过内核'方法结合,可以直接在网卡进行像素高速处理,带来的整体加速比约为 100x ~ 200x。
时钟同步问题:
为了实现时钟同步,需要精细设计补偿算法,这部分难点主要有以下两个方面:
频率同步问题
现实场景中,经常需要在毫秒级时间里传送上千个数据包,发包间隔约为 7-8 us,如此高频率的传送是很难实现的。因此,这里使用网卡限流工具对发包率进行约束。对广播业务而言这非常有用,因为能以一个设备支持不同码率的码流,并且允许码率的动态变化。
然而,在 Intel 或 Mellanox 网卡上实现该限流工具都有一定挑战:
- 首先,这些设备的限流工具都是以整数为单位的,而事实上每秒发送的比特数可能并非整数。
- 其次,不同网卡限流工具的精度不同,误差可达 1000ppm。这导致实际输出的速率会略高于需求值(e.g.需求量为 1 Gbps,而实际量为 1.001 Gbps),而该偏移量也需要进行精细补偿,防止缓冲区的上溢或下溢。
- 由于 ST 2110 使用 PTP(Precision Time Protocol)协议,因此还需要将网卡内部频率和 PTP 频率校准对齐。
相位同步问题
通过频率同步,可以使视频帧的发送频率和 PTP 时钟对齐。同时,ST 2110 标准中规定模拟信号相位起始于一个特殊时间点(称为 PTP epoch) ,而精确地在正确时间开始视频帧是非常困难的,因为我们无法得知从软件发送数据包到开始在无线网络中传输之间的时间间隔。此外,发包间隔、频率和相位这三个变量是相互影响的,改变其中一个会造成对另外两个的扰动,因此偏移补偿更加困难。
其他问题
除了上述三个主要方面以外,ST 2110 的部署还有其他一些难点。
消隐区间
根据视频包之间的间隔不同,ST 2110 将视频流分为 NL(Narrow Linear)型、N(Narrow)型和 W(Wide)型,其中 N 型发送端会有垂直消隐区间(Vertical Blank Interval),该区间内没有数据包发送。这一特性在之前标准中是没有的,而制造一个干净的间隔是很困难的,因为我们无法在 20~40 us 的间隔内关闭再开启传输。唯一的解决方法是利用这段空白去传输其他数据流,如音频、辅助数据等。
同时支持不同码率的多种流
实际应用中,可能无法事先知道视频流的分辨率和帧率,并且某一段码流可能是多种规格视频的组合。因此,需要设计多种补偿算法来保证同时支持各种格式视频,并防止它们相互干扰。
最后附上演讲视频:
http://mpvideo.qpic.cn/0bc36aadeaaavyak5tjzkjrfb4gdglyaamqa.f10002.mp4?dis_k=b88610b51b2d35f46320a6f2180ac900&dis_t=1649675766&vid=wxv_2321135882101424130&format_id=10002&support_redirect=0&mmversion=false