H264视频编解码

一 编解码基础

问:为什么要进行编解码?

答:如果不对视频进行编解码的话,数据量太大了,存储,IO速度将压力倍增。一个4K,24FPS,1小时的数据量为:3840 * 2160 * 3 * 3600 * 25= 2085.5 G, 播放一个4K网络视频,下载速度将要579M/S。经过H264编码后,数据将缩小40~100 倍, 而新一代编码算法H265 ,压缩率甚至高达200.

问:编码的本质是什么?

答:去冗余。就时间上来说,视频前一帧后一帧有很强的相关性,假设对后一帧只保留变化信息,数据量是不是小很多。 就空间上来说,相邻区域的像素很多都是相同的,假设只保留轮廓信息,那么数据量也会小很多。因此视频压缩就是利用相关性去冗余。

问:视频编码流程?

答:编码分为帧内/帧间编码,K 为帧内帧间编码的开关。 

流程为:预测  > 变化 > 量化 > 熵编码

预测:帧内为当前像素和预测值的插值,帧间像一个运动的物体,在一定窗口内搜索到最佳匹配宏块,然后两个宏块相减得到残差值。

变化编码:时域转换到频域,在这个新领域信号能量重新分布,能量更集中,直流低频分量占大部分,高频占小部分。

量化:把DCT系数除以一个常量,量化后结果是量化步长的整数倍或更多零值,从而达到压缩目的。

熵编码:符号出现概率大的用短码字来表示,符号出现概率小的用长码字来表示。

问:视频解码流程?

答:解码是编码的逆过程,另外需要消除由反量化和反变化重建图像由于误差带来的块效应,还需要在最后加入环路滤波。因此解码流程为:

解析码流头 > 熵解码 >  反量化 > 反变换 > 运动补偿 > 滤波。

解析:码流头结构解析,获取量化步长等信息;  熵解码:MPEG-4 的VLD,H264的CAVLD,CABAD; 反量化:H.263的32级量化,MPEG量化表,H.264的52级量化; 反变换:H.263/MPEG的8x8浮点IDCT,H.264的4x4 块定点IDCT; 运动补偿:根据编码中的像素精度,运动方向信息等方向插值并运动补偿; 滤波:去除方块效应。

二 H.264视频编码

问:H.264视频编码有哪些特点?

答:1 提供16x16,8x8,4x4预测模式,2 多参考帧的运动补偿(以往标准P帧参考为1,B帧参考为2,而h.264 最多参考达32),3 1/4像素精度的运动补偿,4 环类去除块效应滤波器,5 CAVLC变长编码(比CABAC效果要好),6 SP,SI 用以解决视频码率切换,7 使用抽象网络层NAL,适应多种网络环境。

问: h.264 算法裆级有哪些及特点?

答:1 Baseline Profile: 提供I/P帧,仅支持Progressive 和 CAVLC,用于视频会话等要求延时低的场景。

        2 Extended Profile:提供I/P/B/SP/SI帧,主要应用于网络视频流。

        3 Main Profile: 常用,应用于消费电子,数字电视广播,数字视频存储。

        4 High Profile: 针对高分辨率和高清晰度专业级视频。

问:H.264有哪些关键技术?

答:帧内预测:利用空间相关性实现的,概括的说就是利用周围的像素点预测当前的像素点。16x16四种预测模式:垂直,水平,直流分量,平面。
帧间预测:用先前编码帧作为参考,对当前图像进行预测编码。运动补偿,运动矢量,整数变换DCT及量化,熵编码,1/4精度运动矢量,多参考帧等方法。

问:SPS,PPS ,SEI 记录了哪些信息?

答:SPS:序列参数集,记录了这一组编码序列相关信息,比如profile(决定编码方式),level(决定最大分辨率和最大帧率),POC,最大参考帧数目,图像的宽度以宏块为单位,图像的高度以宏块为单位
PPS:图像参数集,编码后数据依赖的参数保存于图像参数集中。PPS/SPS 两者都会保存编码方式的信息。关于SPS/PPS 每个字段及含义请参考:https://www.cnblogs.com/wainiwann/p/7477794.html

SEI:补充增强信息, 不记录实际的图像数据, 主要起补充和增强作用。

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值