视频基础知识(帧,时间基)

I/P/B帧

I帧:关键帧,采用的是帧内压缩技术

B帧:前后参考帧,它属于帧间压缩技术,在压缩成B帧前,它会参考它前面的非压缩视频帧,和后面的非压缩的视频帧,纪录下前后两帧都不存放的残差值,这样可以达到更好的压缩率。

P帧:向前参考帧,就是参考的是前一个关键帧的数据,P帧属于帧间压缩技术,相对于B帧,P帧的压缩率要比B帧低

PTS/DTS

PTS:(Presentation TimeStamp)是渲染用的时间戳,也就是说,我们的视频帧按照PTS的时间戳来展示的

DTS:(Decoding TimeStamp)解码时间戳,是用于视频解码的

存在即合理,存在的原因:

第一行,实际应展示的顺序:I    B    B    P

第二行,实际在存放的顺序:I    P    B    B

第三行,按实际顺序号展示:1    4    2    3

第四行,按实际顺序号展示:1    2    3    4

解释:实际展示的帧顺序是I,B,P,P,解码后的视频帧,但实际上这些帧到达之后,P帧参考的是I帧,B帧是双向参考帧,如果I帧和P帧没有解码的话,B帧是无法进行解码的,基于这个问题就出现了PTS和DTS两个时间戳。

时间基

有了时间戳之后,最终进行展示时还需要将PTS时间戳转成以秒为单位的时间

通常在ffmpeg/ffplay命令时,分别是tbr,tbn,tbc

tbr:是我们通常说的帧率。 time base of rate

tbn:视频流的时间基。time base of stream

tbc:视频解码的时间基。time base of codec

在ffmpeg中,不同的时间戳对应不同的时间基。对于视频的渲染我们使用的是视频流的时间基,也就是tbn

时间基即时间刻度,我们以帧率为例,每秒钟的帧率是25帧,那么他的时间基就是1/25,也就是每隔1/25秒后,显示一帧,假设我们当前时间为100,时间基是1/25,转成秒就是 100 * 1/25 = 4

猜你喜欢

转载自www.cnblogs.com/tryFighting/p/12967212.html