在上周落幕帷幕的多媒体领域技术盛会——LiveVideoStackCon音视频技术大会上,阿里云的高级技术专家李刚进行了《下一代低延时的直播CDN》技术分享。主讲人李刚,多年关注在CDN这个领域,早期主要研究和cache服务器缓存以及流媒体相关的技术, 专注CDN文件分发、图片与大文件下载等业务。从2015年开始负责全面构建阿里云CDN直播系统,对流式长连接的分发有很深刻的理解。今天主要分享内容是阿里云自研低延时直播系统在构建时,遇到的一些技术难点与实践。
分享从当下直播技术回顾、低延时直播技术思考、低延时直播技术实现、展望四个部分展开,本文为演讲原文,希望对直播CDN相关从业者有一定的帮助。
一、直播场景回顾
下图列举了当下存在的一些常见的直播场景。
- 秀场直播是国内最早出现的直播形式,在各个直播平台上是比较常见的。
- 游戏直播,像斗鱼、虎牙、战旗等直播平台都是比较典型的游戏直播平台,游戏直播对码率要求比较高,观看人数也多,所以它也是流量贡献最大的直播形式。
- 移动直播是最近一两年比较火的直播形式,比较明显的特点就是推流和播放比较容易, 通过手机APP就可以进行直播,所以手机直播一般也是推流数最多的直播形式。
- 活动赛事直播,像今年夏天的世界杯,这类直播一般对交互要求不高,所以一般都是HLS播放形式,延迟相对其他都会多一些。
- 答题直播是今年年初左右出现的新型直播形式,每场直播的时间不长,突发流量比较高。
这些直播场景,在国内主要用HTTP-FLV和RTMP这种传输形式,这两种传播形式一般延时在3-5秒,当然这也会受视频本身GOP影响, 移动直播一般是1-2秒时间间隔,所以控制在3-5秒是比较容易的。但是游戏直播关键帧延时一般在8-10秒,所以游戏直播的延时更大一些。而活动赛事直播一般不会强调互动性,对流畅度比较高,所以会一般选用HLS,延时在10秒以上。
二、低延时直播需求
3~5秒延时对于多数常见的直播形式一般问题不大, 但是对于某些场景效果会很差。
对于连麦场景影响是最明显的, 连麦超过1秒,对话可能就没办法维持下去了。现在一般直播平台的连麦直播需求都会借助第三方的连麦服务,然后再推给直播CDN厂商。
在答题直播场景下, 一般都要求在一段时间内用户提交答案,如果有各别用户延迟比较大,这样对用户是不公平的。虽然直播平台仍然使用FLV的传输形式完成答题直播,但是基本都会采用SEI插帧等方法来解决时间同步问题, 需要平台的端和直播CDN做一些配合来完成。
除了连麦、答题场景之外,像在线课堂、在线拍卖等场景因为涉及到实时性的互动,对延时的要求也比较高。
从对业务的支持层面来看, 仅仅有RTMP、FLV这种3~5秒延时以上的直播形式已经不够了, 需要对更低延迟的直播业务进行支持。从技术的角度来看,国内常用的FLV、RTMP这种直播手段,本身是Adobe自己的标准, 而且很快会停止对flash的维护, 另一方面WebRTC技术的兴起,Chrome、Safari等浏览器也都进行了支持,因此也需要对新的技术有一些调研和准备。
基于对于这些问题的思考, 阿里云CDN也开展了对低延时直播技术的研发。
三、短延时直播VS实时音视频通信
简单介绍下实时音视频通信和短延时直播的区别:
使用WebRTC主要用于解决实时音视频通话的需求,必然对延迟要求非常严格, 一个会议室中参与的多方可以进行视频通话, 每个参与者可以看到其他参与者,也能听到其他参与者说话。每个参与者既有推流,又有播放,数据是双向的。所以参与人数不会太多,一般不能超过20个。
短延时直播仍然是直播业务类型, 只是延时比较低, 短延时直播的业务模型相对简单, 数据单向传输,一个主播推流,参与的播放者人数没有限制,上百