移动体育直播如何达到广电直播流畅度
、体育赛事直播发生了从广电垄断的 PGC 模式到 PGC + UGC 模式的转变。PGC 模式使用专有线路和卫星信号,其网络质量可以保证观众观看电视时无卡顿现象。而 PGC + UGC 模式则是利用公网网络。那么,如何利用公网网络做到低延迟、低卡顿,使整个直播过程顺畅?七牛云介绍一下 UGC 体育赛事直播如何利用公网网络达到PGC 的流畅度。
基础优化
1、体育赛事直播发生了从广电垄断的 PGC 模式到 PGC + UGC 模式的转变。PGC 模式使用专有线路和卫星信号,其网络质量可以保证观众观看电视时无卡顿现象。而 PGC + UGC 模式则是利用公网网络。那么,如何利用公网网络做到低延迟、低卡顿,使整个直播过程顺畅?

4、图 2 的数据引自国外一篇著名论文。上方是码率的横向对比,码率最终反映视频大小,码率大小与视频大小成正比。图 2 表示客观情况下,视频质量一致时码率的大小,可以看到 H.265 非常强劲,它相当于 H.264 的 75.8%,VP9 的 48.3%,VP9 相比之下成绩较差。讨论了货物的压缩大小和码率,我们还需要考虑装货时长。编解码时长可以形象的比喻为装货时长。图 2 显示,编同样一段视频,H.265 编码时长是 VP9 的 6 倍,VP9 是 H.264 的 40 倍,这是软编码情况下的数据,硬编码时效果会更好。因此,我们选择编码器时需要综合的考量。业界大多采用 H.264,而 H.265 是未来的方向。
5、3)协议选择还有一个重要的概念是协议选择。网页的传输协议是 HTTP,直播领域有三个重要的业界标准,即 RTMP 、 HTTP-FLV 和 HLS,它们有什么区别?分别适合在哪些场景使用?谁又更适合体育直播场景?

6、图 3 的对比数据中列举了几个主要指标。直播最关注的是延迟情况,HLS 延迟 10 秒左右,优化处理后可以减少到 7 秒。目前来说,RTMP 、 HTTP - FLV 延迟 1 到 3 秒。其实它们两个非常相似,都是 Adobe 的私有协议,所以在网页端,它们都需要 Flash Player 支持播放。很早以前,苹果表示不再支持 Flash player 播放器,因为在 Mac 上使用该播放器会存在耗电量大、发热比较严重等问题,后来安卓也不再支持该播放器,这导致安卓和 iOS 对 Flash 的支持度都非常差,因此 RTMP 、 HTTP-FLV 一般比较适合 App 直播。对于 HLS 而言, iOS3 、安卓 3.0 都支持直接在浏览器播放,因此其移动端浏览器支持度更好。相比而言,RTMP 更适合现在社交的直播需求,因为社交类直播有较强的互动需求,土豪送主播礼物时,主播需要马上响应。而 HLS 更适合体育直播领域,因为互动性较低,对延迟要求不高,对跨平台性要求高,需要做到打开网页可以直接播放。
弱网优化
1、在宿舍看球是大家熟悉的场景,那么在宿舍、教育网、3G 场景中如何优化体育赛事直播?众所周知,上述三种场景的网络环境一般都较差,因此我们必须在延迟和卡顿之间作出取舍,而取舍标准是体育赛事直播更关注哪者。理想情况下,鱼和熊掌都想兼得,然而现实是残酷的。在网络环境相对差时,降低卡顿的办法是增加它缓存区的大小,但是延迟会变长,反之亦然。在交互较少的场景中,我们倾向于更流畅的体验。因此处于弱网环境时,可以相应增加缓冲区大小,虽然增加了延时,但是提高了对网络抖动的适应度。
2、1)动态调整码率减少卡顿网络抖动严重时,我们该如何解决?为了达到稳定的码控,可以采用 CBR 方案。譬如,无论画面是高频或低频,推 1 M 体育赛事直播视频流时,都保证 1 M 码率,这样可以降低网络的要求,需要推的码率不需要有很大的波动。当主播端发现网络较差时,便可降低码率,进行动态调节。譬如,将原始的 1 M 码率降低 50 % 到 500 KB,达到优化推流效果,虽然画面有些模糊,但至少是流畅的。
3、2)适度丢帧当处于极端情况,用户网络特别差,视频一直处于加载怎么办?此时,可以采取适度的丢帧。丢帧带给我们的常规体验是卡,但不顿,即屏幕中人一直跳着向前走,整个画面却没有停滞。用户处于极端弱网的环境时,会将这种体验归因于 2G 或者 3G 网络。如果采取丢帧的措施,哪些可以丢?前面介绍过,帧分为 I 帧、B 帧、P 帧三类。在弱网环境中,可以适当丢掉一些 B 帧和 P 帧,留下 I 帧(关键帧)。假如想丢 I 帧,则需将相应的 B 帧和 P 帧全部丢掉,否则画面就会出现马赛克的效果。因此,将整个时间段的帧丢掉,或只丢 B 帧和 P 帧。另外,在播放端,解码分为解码前和解码后两个阶段,两个阶段各丢一部分帧,解码前丢一部分是为了在弱网的环境下优化播放体验,解码后丢一部分是为了解决影音不同步的问题。
4、3)追帧优化在宿舍看球时,假如两个宿舍的人看的视频不同步则会很糟糕,一个宿舍的人欢呼起来,另外一个宿舍的人浑然不知缘由。所以要在不影响用户体验的情况下,降低整体延迟,采用追帧优化策略,即每隔一段时间,服务器的时间戳有很大延迟时,为了赶上服务器的进度,可以选择丢掉一帧,保证大家的步调相对一致。
5、4)最后的杀手锏当前面提及的所有方案都不奏效,又该如何应对?最后一个杀手锏,即在极端情况下优先保证声音,不传图像。当出现这种状况时,观众都明白是自己的网络原因,而这样的方式可以保证观众至少可以从声音方式感受赛事,是没有办法的办法。