如何实现秒开

最近更新时间:2019-07-17 19:18:17

什么叫做“秒开” ?

秒开即从视频播放开始到真正看到第一帧画面所消耗的时间要尽可能的短(几百毫秒时间),不能让观众有明显的等待时间。

这种能力主要依靠云端服务的优化以及播放器的配合,如果您组合使用腾讯云音视频 SDK 配合视频云服务实现直播能力,最快可以实现200ms左右的首屏打开速度,如果网络下行足够好的话甚至可以瞬开。

如何实现“秒开” ?

App 端

使用 移动直播 SDK + FLV 播放协议即可实现秒开:

  • HTTP + FLV 播放协议
    HTTP + FLV 协议是目前直播行业使用最普遍的播放协议,它的数据组织格式比较简单,可以做到一旦连通服务器就能获取到音视频数据。相比之下,RTMP 协议由于连接初期不可避免的几次协商握手过程,导致在首帧速度方面略逊于 FLV 协议。
  • 腾讯云音视频 SDK
    秒开的云端实现原理其实非常简单,服务器始终缓存一组 GOP 画面(至少包含一个可以用于解码的关键帧),这样播放器一旦连通服务器就可以获取到一帧关键帧(I 帧),进而可以解码和播放,但这种云端的缓存也会带来负作用:播放器在连通服务器后,通常会一口气被塞过来几秒钟的音视频数据,从而产生不小的播放端延迟,我们称之为 “秒开后遗症”。
    一款好的播放器,除了具备秒开能力,还要具备优秀的延迟修正能力,能够在无损观看体验的情况下,自动修正播放端延迟到一个合理的范围内(例如1秒以内),而腾讯云音视频 SDK 在这方面就做的非常优秀,您甚至可以指定播放器的延迟修正模式(iOS & Android )。

PC 浏览器

PC 浏览器的视频播放内核一般都是采用 Flash 控件(目前 Chrome 也支持 MSE,但并不比 Flash 有明显优势),Flash 播放器策略是比较刚性的强制缓冲模式,所以视频打开速度没有什么优化空间,一般很难做到1秒以内,这一点可以通过各大视频网站和直播平台的 PC 端表现就能发现。

手机浏览器

  • iPhone
    Safari 对 HLS(m3u8)的支持很好,甚至直接使用 iPhone 的硬解芯片协助视频播放,在具备 DNS 缓存的情况下,视频打开速度通常都有保障,但这也仅限于 iOS 平台。
  • Android
    Android 上的表现就具有比较大的随机性,由于碎片化严重,各个版本和机型的系统浏览器实现都有差异,QQ 和微信内的浏览器甚至采用了腾讯自己的 X5 内核,所以具体表现会有比较大的差异。