在H.264中,图像以序列为单位进行组织,一个序列是一段图像编码后的数据流,一个序列的第一个图像叫做IDR图像,其中IDR图像都是I帧。H.264之所以引入IDR图像是为了解码的重同步,当解码器解码到IDR图像时,立即将参考帧队列清空,将已解码的数据全部输出或抛弃,重新查找参数集,开始一个新的序列。
一、GOP序列和IDR
直播APP开发的序列是一段内容差异不太大的图像编码后生成的一串数据流,当运动变化较少时,一个序列可以很长,因为运动变化少就代表着图像画面的内容变动很小,那么就可以编成一个I帧,然后一直传输P帧、B帧即可。
当运动变化多时,直播APP开发可能一个序列就比较短了,在视频编码序列中,GOP指的是两个I帧之间的距离,而参考周期指的是两个P帧之间的距离,两个I帧之间形成一组图片,就是GOP。
二、PTS和DTS
P帧需要参考前面的I帧或P帧才能生成一张完整的图片,而B帧需要参考前面I帧或P帧及其后面的一个P帧才可以生成一张完整的图片。那么问题在于,先到来的B帧无法立即解锁,需要等待它依赖的后面的I、P、帧先解码完成,这样一来播放时间与解码时间就存在不一致性,顺序打乱了,那这些帧该如何播放呢?这时就引入了DTS和PTS的概念。
1、PTS,指的是显示时间戳,这个时间戳高速直播APP开发的播放器该在什么时候显示这一帧的数据。
2、DTS,解码时间戳,这个时间戳的意义在于告诉播放器该在什么时候解码这一帧的数据。
其实在直播APP开发的日常运营工作中,并不需要了解这么多内容,只需要知道帧类型,也就是I帧、P帧、B帧分别代表着什么就可以了,另外在了解一下关于帧内预测、帧间预测两种去除冗余的方法,就足以应付直播APP开发的使用。
声明:以上内容为云豹科技作者本人原创,未经作者本人同意,禁止转载,否则将追究相关法律责任
领取专属 10元无门槛券
私享最新 技术干货