I帧,P帧,B帧,视频码率,帧率和分辨率 区别和理解

作者&投稿:莘达 2024-06-28
视频压缩中,每帧代表一幅静止的图像。而在实际压缩时,会采取各种算法减少数据的容量,其中IPB就是最常见的。

简单地说, I帧 是关键帧,属于 帧内压缩 。就是和AVI的压缩是一样的。 P是 向前搜索的意思 。B是 双向搜索 。他们都是 基于I帧来压缩数据 。

I帧表示关键帧 ,你可以理解为这一帧画面的完整保留; 解码时只需要本帧数据就可以完成(因为包含完整画面)

P帧 表示的是 这一帧跟之前的一个关键帧(或P帧)的差别 , 解码时 需要用 之前缓存的画面叠加上本帧定义的差别,生成最终画面 。(也就是 差别帧 , P帧没有完整画面数据 ,只有 与前一帧的画面差别的数据 )

B帧是双向差别帧 ,也就是 B帧记录的是本帧与前后帧的差别 (具体比较复杂,有4种情况),换言之, 要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面 ,通过 前后画面的与本帧数据的叠加取得最终的画面 。B帧 压缩率高,但是解码时CPU会比较累 ~。

从上面的解释看,我们知道I和P的解码算法比较简单,资源占用也比较少,I只要自己完成就行了,P呢,也只需要解码器把前一个画面缓存一下,遇到P时就使用之前缓存的画面就好了,如果视频流只有I和P,解码器可以不管后面的数据,边读边解码,线性前进。

但网络上的电影很多都采用了B帧,因为B帧记录的是前后帧的差别 ,比P帧能节约更多的空间,但这样一来,文件小了,解码器就麻烦了,因为在解码时,不仅要用之前缓存的画面,还要知道下一个I或者P的画面(也就是说要预读预解码),而且,B帧不能简单地丢掉, 因为B帧其实也包含了画面信息,如果简单丢掉,并用之前的画面简单重复,就会造成画面卡(其实就是丢帧了) ,并且由于网络上的电影为了节约空间,往往使用相当多的B帧, B帧用的多,对不支持B帧的播放器就造成更大的困扰,画面也就越卡 。

一般平均来说, I的压缩率是7(跟JPG差不多),P是20,B可以达到50 ,可见使用B帧能节省大量空间,节省出来的空间可以用来保存多一些I帧,这样在相同码率下,可以提供更好的画质。

下面举例说明:

在如上图中,GOP (Group of Pictures)长度为13,S0~S7 表示 8个视点,T0~T12 为 GOP的 13个时刻。每个 GOP包含帧数为视点数 GOP 长度的乘积。在该图中一个 GOP 中,包含94 个 B帧。B 帧占一个 GOP 总帧数的 90.38%。GOP 越长,B 帧所占比例更高,编码的率失真性能越高。下图测试序列 Race1 在不同 GOP 下的率失真性能对比。

总结 : I帧,P帧,B帧 理解看粗体字的标记,关键的点都标出了,一定要看重点。

分辨率: 影响图像大小,与图像大小成正比:分辨率越高,图像越大;分辨率越低,图像越小。

视频码率:(1:传输码率;2:编码码率)

码率:影响体积,与体积成正比:码率越大,体积越大;码率越小,体积越小。

传输码率: 码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。也就是取样率(并不等同与采样率,采样率的单位是Hz,表示每秒采样的次数),单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件,但是文件体积与取样率是成正比的,所以几乎所有的编码格式重视的都是如何用最低的码率达到最少的失真,围绕这个核心衍生出来cbr(固定码率)与vbr(可变码率), “码率”就是失真度,码率越高越清晰,反之则画面粗糙而多马赛克。

编码码率:单位时间的数据位数,(下面的结论是针对编码码率来说的跟传输码率没啥关系)

1:在码率一定的情况下,分辨率与清晰度成反比关系:分辨率越高,图像越不清晰,分辨率越低,图像越清晰。(一帧图像就那么多数据,分辨率(面积大)越高,码率一定,相对图像越不清晰了)

2:在分辨率一定的情况下,码率与清晰度成正比关系,码率越高,图像越清晰;码率越低,图像越不清晰。

帧率: 影响画面流畅度,与画面流畅度成正比,帧率越大,画面越流畅;帧率越小,画面越有跳动感。如果码率为变量,则帧率也会影响体积,帧率越高,每秒钟经过的画面越多,需要的码率也越高,体积也越大。 帧率: 就是在1秒钟时间里传输的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次。

1. 音频 码率 计算公式:

音频码率=采样率 x 位深度 x 声道= 44.1Khz x 16位 x 2声道 = 1411.2 Kbps

2.文件大小 = 码率 x 时长(s) = 文件大小 = 码率 x 时长(s) = (Kbps )= (Kbps )/ 1024 Kb = (MB)

2.视频文件大小计算

文件大小 = 码率 x 时长(s)/8 = (Kbps )= (Kbps )/ 1024 Kb = (MB)

问题编解码的音视频同步问题原理

带来一个问题:在视频流中,先到来的 B 帧无法立即解码,需要等待它依赖的后面的 I、P 帧先解码完成,这样一来播放时间与解码时间不一致了,顺序打乱了,那这些帧该如何播放呢?这时就需要我们来了解另外两个概念:DTS 和 PTS。

DTS、PTS 的概念

DTS、PTS 的概念如下所述:

DTS(Decoding Time Stamp):即解码时间戳,这个时间戳的意义在于告诉播放器该在什么时候解码这一帧的数据。

PTS(Presentation Time Stamp):即显示时间戳,这个时间戳用来告诉播放器该在什么时候显示这一帧的数据。

需要注意的是:虽然 DTS、PTS 是用于指导播放端的行为,但它们是在编码的时候由编码器生成的。

当视频流中没有 B 帧时,通常 DTS 和 PTS 的顺序是一致的。但如果有 B 帧时,就回到了我们前面说的问题:解码顺序和播放顺序不一致了。

比如一个视频中,帧的显示顺序是:I B B P,现在我们需要在解码 B 帧时知道 P 帧中信息,因此这几帧在视频流中的顺序可能是:I P B B,这时候就体现出每帧都有 DTS 和 PTS 的作用了。DTS 告诉我们该按什么顺序解码这几帧图像,PTS 告诉我们该按什么顺序显示这几帧图像。顺序大概如下:

PTS:1423  

 DTS:1234

Stream: I P B B

音视频的同步

上面说了视频帧、DTS、PTS 相关的概念。我们都知道在一个媒体流中,除了视频以外,通常还包括音频。音频的播放,也有 DTS、PTS 的概念,但是音频没有类似视频中 B 帧,不需要双向预测,所以音频帧的 DTS、PTS 顺序是一致的。

音频视频混合在一起播放,就呈现了我们常常看到的广义的视频。在音视频一起播放的时候,我们通常需要面临一个问题:怎么去同步它们,以免出现画不对声的情况。

要实现音视频同步,通常需要选择一个参考时钟,参考时钟上的时间是线性递增的,编码音视频流时依据参考时钟上的时间给每帧数据打上时间戳。在播放时,读取数据帧上的时间戳,同时参考当前参考时钟上的时间来安排播放。这里的说的时间戳就是我们前面说的 PTS。实践中,我们可以选择:同步视频到音频、同步音频到视频、同步音频和视频到外部时钟。


你是否需要了解?

I帧,P帧,B帧,视频码率,帧率和分辨率 区别和理解
答:P帧 表示的是 这一帧跟之前的一个关键帧(或P帧)的差别 , 解码时 需要用 之前缓存的画面叠加上本帧定义的差别,生成最终画面 。(也就是 差别帧 , P帧没有完整画面数据 ,只有 与前一帧的画面差别的数据 )B帧是双向差别帧 ,也就是 B帧记录的是本帧与前后帧的差别 (具体比较复杂,有...

视频基本概念
答:I 帧( Intra coded frames ) :I帧不需要参考其他画面而生成,解码时仅靠自己就重构完整图像;I帧图像采用帧内编码方式;I帧所占数据的信息量比较大;I帧图像是周期性出现在图像序列中的,出现频率可由编码器选择;I帧是P帧和B帧的参考帧(其质量直接影响到同组中以后各帧的质量);I帧是帧组GOP的...

音视频之视频相关概念介绍
答:在视频编码中,会把图像分成不同类型的帧,主要有I,P,B帧。I帧:这是帧内编码帧,I帧不需要参考其他帧,解码后就是一幅完整的图像。P帧:前向预测编码帧,需要参考前面已经编码的帧来去除冗余信息完整自己的编码,也就是可以简单理解成,在解码的时候,自己是无法独立解码成一张图片的,需要参考前...

视频的分辨率、帧率和比特率,谁能详细解释一下这三个?求!
答:码率如果为10Mb/s,代表1秒钟有10M bit的视频数据,对于YUV422格式的1080P视频而言,一帧图像是 1920x1080x2x8/1024/1024 = 31.64Mbit,1秒钟30帧图像的话,则有949.2Mb/s,可见其数据量之大,不压缩根本无法网上传播,所以一定要经过视频压缩处理,不要以为1080P的视频就一定是高清的,清晰度还...

H.265是什么格式? H.264是什么格式?
答:其他的视频编码格式:1、H.261:H.261标准是为ISDN设计,主要针对实时编码和解码设计,压缩和解压缩的信号延时不超过150ms。H.261标准主要采用运动补偿的帧间预测、DCT变换、自适应量化、熵编码等压缩技术。只有I帧和P帧,没有B帧,运动估计精度只精确到像素级。2、H.263:H.263标准是甚低码率的图像...

GOP/ 码流 /码率 / 比特率 / 帧速率 / 分辨率
答:同时,由于P、B帧的复杂度大于I帧,所以过多的P、B帧会影响编码效率,使编码效率降低。另外,过长的GOP还会影响Seek操作的响应速度,由于P、B帧是由前面的I或P帧预测得到的,所以Seek操作需要直接定位,解码某一个P或B帧时,需要先解码得到本GOP内的I帧及之前的N个预测帧才可以,GOP值越长,需要解码的预测帧就越多,...

常用的几种视频编码有哪些?
答:视频压缩标准如下:1、H.261 H.261标准是为ISDN设计,主要针对实时编码和解码设计,压缩和解压缩的信号延时不超过150ms,码率px64kbps(p=1~30)。H.261标准主要采用运动补偿的帧间预测、DCT变换、自适应量化、熵编码等压缩技术。只有I帧和P帧,没有B帧,运动估计精度只精确到像素级。支持两种图像扫描...

mkv和mp4的区别?
答:■ B帧可作为参考帧/自由的帧顺序 ■ CAVLC/CABAC熵编码 ■ 自定义精确的矩阵模板 ■ I帧:所有宏块格式(16x16, 8x8, 4x4, 以及有全部预测的PCM)■ P帧:所有的分割块(从16x16到4x4)■ B帧:分割块从16x16到8x8(包括skip/direct)■ 隔行扫描(MBAFF)■ 多个参考帧 ■ 码率控制:固定...

I帧和IDR帧
答:一般来说,I帧的压缩率是 7 (跟JPG差不多),P帧是 20,B帧可以达到 50 。可见使用B帧能节省大量空间,节省出来的空间可以用来保存多一些I帧,这样在相同码率下,可以提供更好的画质。 IDR frame:I和IDR帧都使用 帧内预测 ,在编码解码中为了方便,首个 I帧 要和其他I帧区别开,把第一个I帧叫IDR,这样方便控制...

监控视频压缩编解码的介绍
答:I帧图像采用帧内编码方式,即只利用了单帧图像内的空间相关性,而没有利用时间相关性。P帧和B帧图像采用帧间编码方式,即同时利用了空间和时间上的相关性。P帧图像只采用前向时间预测,可以提高压缩效率和图像质量。P帧图像中可以包含帧内编码的部分,即P帧中的每一个宏块可以是前向预测,也可以是帧内编码。B帧图像...