[关闭]
@qidiandasheng 2020-09-18T11:08:17.000000Z 字数 2515 阅读 1386

视频基础概念

音视频


分辨率、帧率、码率

分辨率:单位英寸中所包含的像素点数;
帧率:FPS(frame per second 每秒钟要多少帧画面)
码率:BPS(Bits Per Second 编码器每秒编出的数据大小)单位是kbps,比如800kbps代表编码器每秒产生800kb的数据。

分辨率

分辨率是指单位长度内像素点的数量,它的单位通常为ppi。

如72ppi表示1英寸包含72个像素点,300ppi表示每英寸含300个像素点。分辨率决定了位图细节的精细程度,通常情况下,分辨率越高包含的像素就越高,图像就越清晰。

当然我们这是没有在其他因素影响的情况下,但在有些情况下,分辨率越高可能越不清晰。

比如我们固定码率,如果我们分辨率越高,那么就需要压缩图像来减少每秒编出的数据大小,编码器就会通过减少色彩信息或引入“马赛克”等各种方式来承载足够多的像素点,视频可能也就会不清晰了。

帧率

影响画面流畅度,与画面流畅度成正比:

肉眼极限FPS为一般说法为每秒30帧,但这个也视情况而定。人眼并不是摄影机,视觉不是被动一帧帧记录看到的图像,而是神经系统主动处理视觉信息的过程。

基本上电影都为每秒24帧,也有高帧率的设备拍好后再降低帧率,模仿“电影的感觉”。但比如李安120帧的电影,主要适应了电影中高速镜头的细节,让人眼能对高速镜头下的画面看的更加清楚。

码率

视频码率就是数据传输时单位时间传送的数据位数,也叫取样率、码流率。

一般我们用的单位是kbps即千位每秒(kb/s)。单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件。

当然码率也不一定越高越好,在我们肉眼分辨的范围内,当码率高到一定程度,感觉没有什么差别。所以码率设置有它的最优值,H.264(也叫AVC或X.264)的文档中,视频的建议码率如下:

v2-6242f573451cbfed293ff6ba9543de9f_1440w.jpg-15.8kB

手机设置码率建议:

v2-24d825761d500ae9a0bf42e4c7a32c88_1440w.jpg-42.8kB

清晰度和码率的关系

视频编解码(h264)

我们在视频传输的时候需要对原始视频格式进行编码,于是就出现了各种编码格式,其中主流的就是h264,出现这种格式的原因主要就是对视频大小进行压缩。

比如我们视频的原生格式YUV420,宽度为480,高度为320的视频,每一帧 需要 480*320*3/2 = 230400 字节。假设视频每秒20帧,那么30秒的视频 是 230400 * 20 * 30 = 138240000 字节 大约138M。然而同样分辨率的h264视频可能只要1~2M左右。

h264编码最主要的一点就是生成了IBP帧,通过将视频帧分为关键帧和非关键帧来对视频进行一个压缩。

解码的话就是一个反向的过程,把h264格式解码为原始的YUV420格式。

在iOS上一般使用硬件编码的方式,解码时使用软编的方式。

硬编码是系统提供的,由系统专门嵌入的硬件设备处理音视频编码,主要计算操作在对应的硬件中。硬编码的特点是,速度快,cpu占用少,但是不够灵活,只能使用一些特定的功能。

软编码是指,通过代码计算进行数据编码,主要计算操作在cpu中。软编码的特点是,灵活,多样,功能丰富可扩展,但是cpu占用较多。

GOP

英文全称Group Of Pictures,一般来说,指的就是两个I帧之间的间隔。

编码器将多张图像进行编码后生产成一段一段的 GOP ( Group of Pictures ) , 解码器在播放时则是读取一段一段的 GOP 进行解码后读取画面再渲染显示。

GOP 是一组连续的画面,由一张 I 帧和数张 B / P 帧组成,是视频图像编码器和解码器存取的基本单位,它的排列顺序将会一直重复到影像结束。

IBP帧

视频压缩中,每帧都代表着一幅静止的图像。而在进行实际压缩时,会采取各种算法以减少数据的容量,其中IPB帧就是最常见的一种。

简单地讲,I 帧是一个完整的画面,而 P 帧和 B 帧记录的是相对于 I 帧的变化。如果没有 I 帧,P 帧和 B 帧就无法解码。

导出图片Wed Apr 22 2020 14_18_06 GMT+0800 (中国标准时间).png-303.7kB

导出图片Wed Apr 22 2020 14_18_18 GMT+0800 (中国标准时间).png-231.5kB

DTS 和 PTS

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

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

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

比如一个视频中,帧的显示顺序是:I B B P,现在我们需要在解码 B 帧时知道 P 帧中信息,因此这几帧在视频流中的顺序可能是:I P B B。

DTS 告诉我们该按什么顺序解码这几帧图像,PTS告诉我们该按什么顺序显示这几帧图像。

v2-f6dfae0df250b829ceed445322fb5511_1200x500.jpg-39.1kB

参考

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

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注