让直播源代码平台做到视频秒开的办法

  • 发布时间:2021-03-05 09:56:32,加入时间:2018年11月17日(距今2402天)
  • 地址:中国»山东»泰安:山东省泰安市岱岳区徽京国际大厦10楼云豹科技
  • 公司:泰安云豹网络科技有限公司, 用户等级:普通会员 已认证
  • 联系:刘爱,手机:17175331170 QQ:3002512678

一、视频是如何播放的?帧的概念

国内大部分视频直播软件都是使用的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服务器对帧进行提前判定就可以,对于关键帧和其它帧进行处理后(由于篇幅限制,这里就不详细展开了),使得播放端首先接收到的第一帧为关键帧就可以了。

以上就是在直播源代码开发过程中,直播能做到秒开的原理。

联系我时请说明来自志趣网,谢谢!

免责申明:志趣网所展示的信息由用户自行提供,其真实性、合法性、准确性由信息发布人负责。使用本网站的所有用户须接受并遵守法律法规。志趣网不提供任何保证,并不承担任何法律责任。 志趣网建议您交易小心谨慎。