视频解析中的基础常识(一)名词解释

2020-05-07 09:52:01 浏览数 (1)

视频是由一帧一帧的静态图片连续播放形成的,因此一帧就是视频中一个静态的画面

关键帧

关键帧也被称之为I帧,是帧编码中最重要的帧。视频编码是按照进行的,每一组称为GOP(group of picture)。GOP之间是有关联系的,编码的关系只在一个GOP之间处理,关键帧是一幅完整的画面,GOP之间的帧都是不完整的,需要关键帧、前面帧、后面帧等一起运算得到。__关键帧的间隔条件会影响到GOP的长度,继而影响到读取GOP的速度,如果关键帧间隔设置过大,在必须用到关键帧的场景就可能需要B/P帧来代替,这样会降低画面质量。

B帧

前后参考帧也称为B帧,参考前面 后面两帧的变化合成当前帧数据

P帧

向前参考帧也称为P帧

帧关联 I B P

I帧是帧内压缩,因此自身是完整的可以直接解析出数据,因此I帧的单位时间数量和自身的数据量决定了视频数据解析出的画质。

而P B帧是帧间压缩,是根据算法等相互参考生成的。以I帧为基础,预测P帧,再一 I P帧为基础预测B帧,最后将I帧数据和预测的差值存储和传输。

通常来货I帧压缩率在 7 P帧为20 B帧可达到50,因此fps一定下I帧是决定画质的关键点

帧率

一秒内传输图片的帧数,通常就是我们说的fps 。fps数值越大则代表传输数据越多画面越细腻流畅。当然FPS越高对显卡性能要求越高

数据传输计算(示例)

图片分辨 1024_768 页面为 24fps 那么1s数据传输是 1024_768*24像素数据

针对 H.264

在直播中我们通常采用H.264,想要进行直播数据编码因此一些理论知识也是必不可少的

NALU

全程为 New他work abstract layer unit(网络抽象层单元),包含一个字节的头信息和一系列来自VCL称为原始字节序列的字节流(RBSP),H264在网络上传输的是NALU,NALU的结构:NAL头 RBSP

SPS

H264中第一个NALU是SPS(薛烈璀璨好数据集 Sequence Parameter Set)

SPS中保存了一组编码视频序列(Coded video sequence)的全局参数。所谓的编码视频序列即原始视频的一帧一帧的像素数据经过编码之后的结构组成的序列。

PPS

H.264码流第二个 NALU是 PPS(图像参数集Picture Parameter Set)

通常情况下,PPS类似于SPS,在H.264的裸码流中单独保存在一个NAL Unit中,只是PPS NAL Unit的nal_unit_type值为8;而在封装格式中,PPS通常与SPS一起,保存在视频文件的文件头中。

IDR (特殊的I帧)

H.264码流第三个 NALU 是 IDR(即时解码器刷新)

I 帧与IDR的区别

I和IDR帧都是使用帧内预测的。它们都是同一个东西而已,在编码和解码中为了方便,要首个I帧和其他I帧区别开,所以才把第一个首个I帧叫IDR,这样就方便控制编码和解码流程。IDR帧的作用是立刻刷新,使错误不致传播,从IDR帧开始,重新算一个新的序列开始编码。而I帧不具有随机访问的能力,这个功能是由IDR承担,IDR会导致DPB(参考帧列表——这是关键所在)清空,而I不会。IDR图像一定是I图像,但I图像不一定是IDR图像。一个序列中可以有很多的I图像,I图像之后的图象可以引用I图像之间的图像做运动参考。对于IDR帧来说,在IDR帧之后的所有帧都不能引用任何IDR帧之前的帧的内容,与此相反,对于普通的I-帧来说,位于其之后的B-和P-帧可以引用位于普通I-帧之前的I-帧。从随机存取的视频流中,播放器永远可以从一个IDR帧播放,因为在它之后没有任何帧引用之前的帧。但是,不能在一个没有IDR帧的视频中从任意点开始播放,因为后面的帧总是会引用前面的帧。

说白了就是:

IDR作为起始帧,拿到IDR可以纠正错误,可以从新纠正参数刷新从来。并未我不参考以往,所有均从我开始

0 人点赞