二、视频编解码基础知识

一、概述

图像信息经采集后生成的原始视频数据,数据量非常大,对于某些采集后直接本地播放的应用场合,不需要考虑压缩技术。但现实中更多的应用场合,涉及视频的传输与存储,传输网络与存储设备无法容忍原始视频数据的巨大数据量,必须将原始视频数据经过编码压缩后,再进行传输与存储。

二、为什么要进行视频压缩?

(1)未经压缩的数字视频的数据量巨大
(2)存储困难,如:一张DVD只能存储几秒钟的未压缩数字视频
(3)传输困难,如:1兆的带宽传输一秒的数字电视视频需要大约4分钟,720p RGB 15帧每秒码率计算: 1280 x 720 x 3 x 15 ≈ 41MB ≈ 331Mb

三、视频压缩的可行性,为什么可以进行视频压缩?

将视频数据中的冗余信息去除,寻找像素之间的相关性,还有不同时间的图像帧之间的相关性。

冗余信息类别 内容 压缩方法
空间冗余 图像相邻像素之间有较强的相关性 变换编码、帧内预测
时间冗余 视频序列的相邻图像之间内容相似 运动补偿、帧间预测
编码冗余 不同像素值出现的概率不同 轮廊编码、区域分割
视觉冗余 人的视觉系统对某些细节不敏感 非线性量化、位分配
知识冗余 收发两端对人物的共有认识 基于知识的编码
其他 不确定因素
视频冗余

四、视频压缩分类

  • 无损压缩(Lossless),压缩前解压缩后图像完全一致X=X',压缩比低(2:1~3:1),例如:Winzip,JPEG-LS,哈夫曼编码,
  • 有损压缩(Lossy),压缩前解压缩后图像不一致X≠X',压缩比高(10:1~20:1),利用人的视觉系统的特性,例如:MPEG-2,H.264/AVC,AVS

五、视频编码是什么?

视频编码 是压缩和可能改变视频内容格式的过程,有时甚至将模拟源更改为数字源。在压缩方面,目标是减少占用空间。这是因为它是一个有损的过程,会抛弃与视频相关的信息。在解压缩以进行回放时,创建原始的近似值。应用的压缩越多,抛出的数据越多,近似值与原始数据相比越差。

六、什么是视频编解码器?

视频编解码器是通过软件或硬件应用程序完成的视频压缩标准。编解码器,如:H.264,VP8,RV40以及其他标准或更高版本(VP9)

  • 编码器(Encoder) -- 压缩信号的设备或程序,用于压缩视频。
  • 解码器(Decoder) -- 解压缩信号的设备或程序,用于重新创建视频的近似值以用于回放。

注:音频编解码器,如:LAME / MP3,Fraunhofer FDK AAC,FLAC等。

七、编码的基本概念及原理

1. 预测编码

根据已经编码好的块信息得到一个预测值,这样只需要编码实际值与预测值之间的差异即可。
空间冗余的消除:
帧内预测:根据同一帧中相邻已编码好的块信息得到预测数据,编码差异数据
时间冗余的消除:
帧间预测:根据已编码帧中的块信息得到预测数据,编码差异数据

预测编码.png

2. IPB帧类型(经过压缩后的帧类型)

I 帧:仅采用帧内压缩技术,压缩效率最低,编解码无需用到其他帧的信息,是GOP的起始点。
P 帧:前向预测帧,编解码只参考前一个帧,可作为其他图像编码时的参考帧,属帧间压缩技术。
B 帧:双向预测帧,编解码既参考前一帧也可参考后一帧,压缩效率最高,复杂度高,时延较大,属帧间压缩技术。

3. GOP (图像组)

GOP(group of pictures)一般指两个I帧之间的间隔帧数,两个I帧之间是一个图像序列,在一个图像序列中只有一个I帧。

IPB序列 IP序列

直播场景下,由于对延时高要求,而B帧会带来延时,所以都是使用IP序列

4. H264压缩技术 -- 基本概念

H.264 原始码流(⼜称为 裸流),是由⼀个接⼀个的 NALU 组成的,而它的功能分为两层:视频编码层VCL 和 网络提取层NAL。

4.1 视频编码层VCL(Video Coding Layer)

VCL负责有效表示视频数据的内容。
H264除了实现了对视频的压缩处理之外,为了方便网络传输,提供了对应的视频编码和分片策略;类似于网络数据封装成IP帧,在H264中将其称为组(gop)、片(slice)、宏块(Macroblock)这些一起组成了H264的码流分层结构;H264将其组织成为序列(GOP)、图片(pictrue)、片(Slice)、宏块(Macroblock)、子块(subblock)五个层次。

宏块:视频编码的基本单元,h264通常宏块大小为16x16个像素,所以编码器一般会对图像的宽 高有要求,需要为16的倍数。
Slice:条带,图像的划分,一帧图像可编码成一个或者多个条带,每条带包含整数个宏块。
SPS: 序列参数集,包含应用于完整视频序列的语法元素,比如图像宽,高等。
PPS: 图像参数集,包含应用于编码图像的语法元素,比如量化参数,参考帧列表大小等。

4.2 网络传输层 NAL (Network Abstraction Layer)

NAL定义了数据封装的格式和统一的网络接口,负责格式化VCL数据并提供头信息,以保证数据适合各种信道和存储介质上的传输。
NAL基本单元为NALU,每一个NALU包含一个字节的头信息和其后的负载数据。

参考文档
https://zhuanlan.zhihu.com/p/31056455
https://blog.csdn.net/knowledgebao/article/details/86716428
重点链接:NAL/NALU详解可以查阅:
https://www.jianshu.com/p/1b3f8187b271
http://www.wendangku.net/doc/039e95757fd5360cba1adb46.html

5. H264压缩技术 -- 基本原理

流程图

附上几篇文章:
https://blog.csdn.net/knowledgebao/article/details/86716428
https://zhuanlan.zhihu.com/p/31056455
https://www.jianshu.com/p/0c296b05ef2a

八、常见编码器 及 相关术语说明

8.1 常见编码器

  • OpenH264
    思科开源软件编解码器,适用于实时程序,例如webrtc。
    只支持IP帧类型;
    只支持baseline profile;
    动态调整码率,帧率,分辨率;
    支持分层编码SVC;
    编码速度快,cpu使用率低。

  • X264
    VideoLAN工作组开发的开源编码器,历史久远,适用于各种场景。
    支持IPB帧;
    支持多种profile,level;
    各种配置适合多种场景,例如动画,电影等;
    cpu占用相对会高一点;
    直播使用的场景预置为zerolatency。

8.2 硬编硬解

Android平台市面上大部分的芯片厂商的硬编硬解都适配,例如:高通,三星Exynos,联发科,海思等;windows平台上支持Intel qsv硬编硬解。

不同点 硬编 软编(普通编码)
编码方式 使用非CPU进行编码,如显卡GPU、专用的DSP、FPGA、ASIC芯片等。 使用CPU进行编码
使用方式 性能高,低码率下通常质量低于软编码器,但部分产品在GPU硬件平台移植了优秀的软编码算法(如X264)的,质量基本等同于软编码 实现直接、简单,参数调整方便,升级易,但CPU负载重,性能较硬编码低,低码率下质量通常比硬编码要好一点
复杂程度 普通编码是一种设计,而硬编码不过是一种具体的实现 普通编码比硬编码要复杂一些,对以后的考虑要周到一些
对比 软编软解 硬件编解码
开销 使用cpu,占用率高 使用特定硬件(GPU),基本不占用cpu
延迟 延时较低 延时与硬件有关,比较高
适应性 灵活,普适性高 适用性窄,部分解码会对码流有要求
画质 同等码率下画质好 同等码率下画质稍差

8.3 分辨率

分辨率:(矩形)图片的长度和宽带,即图片的尺寸。影响图像大小,与图像大小成正比;分辨率越高,图像越大;分辨率越低,图像越小。
分辨率是指视频画面横向和纵向被切分成多少块。
区别 1080P , 3MP ,4K
P 720P 、1080P 表示的是"视频像素的总函数" ,' P ' (Progressive的缩写)表示的是"逐行扫描"
K 2K 、4K 等是表示 "视频像素的总列数" ,4K表示的是视频有4000列的像素数,具体是3840列或4096列。
MP 代表的是像素总数,指像素的行数(P)与列数(K)相乘后的一个结果(百万像素)。

8.4 帧率

帧率 是指每秒图像的数量,一帧代表的就是一副静止的画面,连续的帧就形成了动画。影响画面流畅度,与画面流畅度成正比:帧率越大,画面越流畅;帧率越小,画面越有跳动感。帧率就是在1秒钟时间里传输的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次。

8.5 码流 Data Rate ( 码率 )

码率 指编码器每秒编出的数据大小,单位是kbps 。
视频文件在单位时间内使用的数据流量,指把每秒显示的图片进行压缩后的数据量。影响体积,与体积成正比:码率越大,体积越大,码率越小,体积越小。(体积=码率X时间)
压缩前的每秒数据量 = 帧率 x 分辨率(单位是字节)
压缩比 = 压缩前的每秒数据量 / 码率(对于同一视频源并采用同一种视频编码算法,压缩比越高,画面质量越差)

清晰度
在码率一定的情况下,分辨率与清晰度成反比关系:分辨率越高,图像越不清晰,分辨率越低,图像越清晰。
在分辨率一定的情况下,码率与清晰度成正比关系,码率越高,图像越清晰;码率越低,图像越不清晰。
好文章理解分辨率、帧率和码率三者之间的关系:https://blog.csdn.net/qq_39759656/article/details/80701965

直播场景下,常见的视频配置的推荐如下

分辨率 p 帧率 fps 码率 Kbps
240*320 15 300
360*640 15 600
480*640 15 800
540*960 20 1200
720*1280 20 1500
1080*1920 30 3000

都看到这里了,点个赞呗 0.0

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,881评论 4 368
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,052评论 1 301
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,598评论 0 250
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,407评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,823评论 3 294
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,872评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,037评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,778评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,505评论 1 247
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,745评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,233评论 1 264
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,568评论 3 260
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,231评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,141评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,939评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,954评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,784评论 2 275

推荐阅读更多精彩内容