来源:Demuxed 2021 主讲人:Luke Curley(Twitch) 内容整理:彭峰 QUIC (RFC 9000) 是一种新的网络协议,旨在为 HTTP/3 提供支持,但它也是视频等其他应用程序的强大传输方式。将视频映射到 QUIC API 有多种方法,具体取决于目标延迟和用户体验。在 Twitch/IVS,一个新的分发协议 (Warp) 被构建来替换原来的 HLS 堆栈,利用独特的优先级方案来最大限度地减少面对拥塞时的延迟。
目录
- WebRTC 能否实现低延时目标
- 视频质量和延时之间的平衡
- 更好的解决方案——Segment Truncation
- Warp——基于 Segment Truncation 的视频协议
WebRTC 能否实现低延时目标
演讲者作为 Twitch 的工程师,主要负责降低视频观看延时方面的工作,从而使得视频观看过程中增加交互的可能。鉴于 WebRTC 能减低延时的特点,演讲者首先将现有的视频服务框架迁移到 WebRTC 上,但结果表明,尽管经过许多优化,WebRTC 依旧没有实现预期的目标,其原因是 WebRTC 的机制中不同的数据流存在不同的优先级,例如对话语音数据有较高的优先级,而视频观看体验却不是很好,经历了一年的努力,工程师团队放弃了利用 WebRTC 实现低延时目标的愿望。
WebRTC 不能提升视频观看体验
视频质量和延时之间的平衡
对失败项目进行评估后,工程师们觉得要实现高视频质量的同时降低延时是很困难的,如果单独对视频质量优化,必然会引起观看时延增加,同理,如果只考虑减低时延,必然也会顾此失彼,最终的视频质量下降。所以,如何在视频质量和观看时延之间平衡很重要,其中影响最大的因素就是用户体验。
Quality vs Latency
为了解决上述的平衡问题,对视频播放延时进行优化的同时保证服务质量,首先需要明确视频播放延时来自何处。通常而言,延时主要来自网络拥塞。当用户正在使用视频服务,观看视频时,服务器会以视频帧的形式将视频发送给用户,在这个过程中,如果网络突然拥塞,视频的中间的某一帧丢失,那么整个视频就无法观看,需要进行一段时间的缓存。
为了减少这种不好的用户体验,首先的解决方法是丢帧,例如 WebRTC 如果没有收到就直接跳过,并且也不要求服务端进行重传。尽管可以降低延时,但这种方法面临的一个问题就是如果系统不小心丢失了视频的关键帧,那么会对视频的解码造成极大影响,用户会产生视觉混乱,从而影响视频质量,正如前文提到的平衡。对于 Twitch 来说,作为一个视频播放服务提供商,这种激进的策略是不适用的。第二种解决方案是通过判断网络情况,主动降低编码器的编码码率,但是由于用户过多,不同用户的网络条件不同,码率要求也不一样。第三种解决方案是等待视频缓冲,等待一段时间缓冲后,提示用户是否需要更换更低码率的视频,正如 HLS 和 DASH 的机制。
视频播放的延时图示
更好的解决方案——Segment Truncation
当发生视频卡顿时,如果视频的下一个 GOP 是可用的,那么立即将其传输给用户,用户端则跳过未到达的 GOP,直接对下一组接收到的 GOP 进行解码,然后播放。这个想法或许可以提高用户体验,但是如何实现这一系统是一问题。如果使用两个或多个 TCP 连接发送 GOP 来实现,那么不同连接之间存在网络资源竞争;如果使用一个 TCP 连接来实现,则会遇到 head-of-line 的问题。而最近新兴的 Quic 协议解决了这个问题,其赋予了 HTTP/3 强大的发送功能,Quic 具有很多优点,例如:
- 信息加密
- 握手(建立连接)迅速
- 支持漫游
- 拥塞控制灵活
- 负载均衡 Quic 提供了多流传输机制,在一个连接中,可以传输多个数据流,这些数据流是相互独立的可以单独关闭或者开启,并且由于共享了网络信息,其拥塞控制行为相同,并不会相互竞争资源。此外 Quic 是基于 UDP 在应用层实现的,这意味着其使用更为方便。
segment truncation
Warp——基于 Segment Truncation 的视频协议
Warp 是一个轻量的视频协议,其将视频的每个 GOP 视为一个数据流,并且为不同的数据流标记优先级,例如音频优先级高于视频,新的 GOP 数据流高于旧的,如果有的 GOP 数据流迟迟没有被收到,那客户端就会跳过该段,对之后的 GOP 数据进行解码。在演讲者展示的 Demo 中,基于 HLS 或者 DASH 的视频播放过程中存在明显一段时间的卡顿,但基于 Warp 的视频播放过程是较为流畅的,尽管中途跳过了一段视频,但研究者认为这对用户来说,观看体验好于卡顿的情况。当然,除了 Warp 之外,Fackbook 也提出了类似的协议——RUSH。
Warp原理
最后附上演讲视频:
http://mpvideo.qpic.cn/0bc3yyaciaaa4aaalfjldbrfbrwdetdaajaa.f10002.mp4?dis_k=4ee8f789416e4f2b4e14cf9cd3badf35&dis_t=1649675327&vid=wxv_2305213488392404993&format_id=10002&support_redirect=0&mmversion=false