怎样才能在直播间搭建的过程中实现首屏秒开呢?

发布来源:云豹科技
发布人:云豹科技
2019-03-25 09:18:16

在交互性和流动性极强的直播场景下,首屏打开速度是直接影响用户体验的重要因素之一。为了实现直播中的首屏秒开,需要从技术层面上进行分析和解决。所以,在直播间搭建时采取怎样的措施才能实现首屏秒开呢?我们还需要先从视频的播放原理说起。

1. 视频怎样才能播放?

在直播中我们所看到的画面,要想播放是需要有视频数据的。将视频数据放到编码器中后,编码器将视频数据解码出来,然后再进行播放,这是一个基本的播放流程。目前市面上较为主流的编码标准为H.264,并需要三个不同的帧。这里所说的帧就是我们所看到的每一个图像,其中最常见的就是I帧、P帧、B帧。

直播源码

2.什么是所谓的I帧、P帧、B帧?

I帧:(1)是一个自描述帧,解码之后为整张图片。

(2)无其他帧引用,无需做前置和后置的引用。

(3)压缩比是最小的,因为它包含了整个图片中的所有数据。

P帧:也可以说是预测帧,P帧只负责向前引用,也就是任何一个P帧只看往前这些帧的数据。它的好处是:P帧只存一些变化信息,压缩比是I帧的50%。

直播系统

B帧:相比起前面两种帧,它比较特别。B帧需要引用前面P帧某一部分的图像数据时,B帧后面的数据也会引用,这是B帧的特点。它既要引用前面的数据,也要引用后面的数据。压缩比相对于P帧和I帧较大,由于B帧的压缩比较大,使用B帧可以降低视频的大小。

I帧、P帧、B帧组成的视频流,我们通常把它叫为GOP。

3.为什么打开直播之前需要等待?

直播是一个流,而并不像点播一样大家都是从0秒开始的。况且,任何一个视频文件,0秒的第一个帧肯定都是关键帧。对于直播来讲,播放器是随机接到视频流进行播放的,所以随机的时间点的帧有可能拿到的第一个帧是I帧,或P帧和B帧,是随机的。但是在这种情况下,可能会出现黑屏的情况。而大部分的播放器,都是拿到一个完成的GOP后才能解码播放,而基于ffmpeg移植的播放器甚至需要等待音画时间戳同步后才能进行播放。

4.怎样实现首屏秒开?

1)优化app业务逻辑

可以提前做好DNS解析,并且提前做好测速选择最优线路。经过这样的预处理之后,点击播放就会提高下载性能。当然,可以围绕传输层面做一些性能优化,也可以围绕用户的播放行为做业务逻辑优化,为首屏秒开提供优化空间。

2)改写播放器逻辑

播放器拿到第一个关键帧之后就显示,而GOP的第一帧通常都是关键帧,这样一来有可能会实现秒开。如果直播的服务器支持GOP缓存,那就意味着播放器和服务器在建立连接后可以立即拿到数据,节省跨运营上和地域的回源传输时间。GOP体现了关键帧的周期,也就是两个关键帧之间的距离,即一个帧组的最大帧数,一般情况下每一秒视频至少需要使用一个关键帧。如果无法更改播放器的行为逻辑,也可以从缓存GOP改成缓存双关键帧,这样一来就可以大大地减少播放器加载GOP需要传输的内容体积。

直播软件源码

随着用户对直播app的要求越来越严格,在直播间搭建的过程中,提高用户体验且实现首屏秒开成为了技术人员最需要解决的问题之一。

本文声明原创,转载请注明云豹科技。(www.yunbaokj.com)

声明:
以上内容为云豹科技作者本人原创,未经作者本人同意,禁止转载,否则将追究相关法律责任