如何让直播平台做到视频秒开?
在视频直播软件开发过程中,对于RTMP流播放时出现的黑屏问题,一般的认识都是因为网络慢、PC或手机性能差,那么就真的是这样的吗?下面我们就来看看当视频播放时发生了什么?
一、视频是如何播放的?帧的概念
国内大部分视频直播软件都是使用的H.264和AAC,一般都是在这个基础上进行秒开优化。对于H.264编码来说,会有三个不同的帧,所谓帧是什么呢?就是你看到的每一个图像。例如电影最开始用胶片拍的时候,每秒是25帧,指的就是每秒25张图片在切换。对于H.264来讲,常见的有I帧,P帧,和B帧。I帧:它是一个自描述帧,你可以将其理解为类似一张jpg图片,里面所有的数据在释放出来后,就是一整张图片,它的压缩比是最小的,因为它里面包含整张图片的所有数据。
P帧:也被称为预测帧,它只保留图片中的一些变化信息,它的压缩比是I帧的50%。
B帧:用于前后双向引用预测。它要引用P帧前面某一部分的图像数据,同时后面的数据也会引用,那么它的优势就是压缩比要比P帧还大,大概是I帧的25%,也就是若B帧特别多的话,会限制视频的大小。
IDR帧:IDR帧是I帧里的里面的特殊帧,又被称为“关键帧”,这个帧的用处就是播放器可以直接从这个帧开始往后播放,它保证后面的P帧和B帧的引用不会跨越IDR帧,当视频编码器遇到IDR帧时,就可以把当前的Buffer清空,然后从当前IDR帧开始解码向Buffer里输入数据,后续帧就可以从Buffer里进行数据引用、解码,最终将数据流播放到显示器上,也就是说编码器可以从任何一个IDR帧开始解码。
二、直播为什么会有等待时间
了解帧的作用后,我们来看下,视频直播为什么会有等待时间?对于直播来讲,它的形式为流。它不像点播,是从0秒开始,任何一个视频文件,0秒第一个帧肯定都是关键帧。那么对于直播来讲,若在随机的时间点接到这个视频流进行播放,那么接入这个时间点的第一帧有可能是I帧,也有可能是B帧,也有可能是P帧。在这种情况下,直播时大概率会出现黑屏的状态。例如播放端接到的第一帧是P帧,对于P帧来讲,解码器面那个Buffer是空的,无法解码,所以它只能丢弃这个帧。
所以,对于视频直播来讲,1秒钟的帧数是固定的,只能等到我下一个关键帧到来的时候,才能开始播放。当然如果赶巧了的话,接入瞬间得到的数据正好是个I帧,就可以达到秒开的效果。因此,如果让直播达到秒开,只需让cache服务器对帧进行提前判定就可以,对于关键帧和其它帧进行处理后(由于篇幅限制,这里就不详细展开了),使得播放端首先接收到的第一帧为关键帧就可以了。
以上就是在视频直播软件开发过程中,直播能做到秒开的原理,当然,我们还能通过平滑发送机制、对播放端进行优化,调整冗余度等来对直播进行秒开优化,这些将放在以后再讲。如果你对视频直播软件开发等相关业务感兴趣,欢迎咨询官方客服。
本文章声明原创,转载请注明出自云豹科技www.yunbaokj.com