网易视频云:视频压缩编码浅谈 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
yuvhnfkw
V2EX    程序员

网易视频云:视频压缩编码浅谈

  •  
  •   yuvhnfkw 2016-10-26 18:52:51 +08:00 2428 次点击
    这是一个创建于 3349 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在这个全民直播时代,用户对视觉信息表达越来越重视,也越来越强调提高视频主观质量的需求,今天,我们就带着这些用户问题,讨论下视频压缩编码这项技术

    1. 视频为什么要压缩?

    视频即连续的图像,数字化后的图像或视频信息是海量的,举一个具体的例子,摄像头拍摄的一幅静态图像空间像素点(画面大小,也即分辨率) 640*480 个,每个像素点由 RGB 三元素组成,每个元素由 8bit 二进制位表达,则一副数字图像的大小为:

    视频是由很多幅图像组成,人眼感知视频播放流畅一般为 24fps ( frame persecond ,简称 fps ),根据视觉暂留原理,要达到最基本的视频播放效果大约也需要 10fps 的速度,我们这里以 24fps 代表一般情况,电影胶卷都是以这个帧率在拍摄,也就是视频的 1 秒由 24 幅静态图像组成,则一秒产生的视频信号量为:

    原始视频的大小由此可见,一秒耗尽 172m ,如果我们是在 4g 下直播,不到 6 秒就消耗 1g 流量,那直播不超过几分钟,流量包就爆啦,

    2. 视频为什么能压缩?

    压缩编码的前提是信息存在冗余,去掉冗余的信息,达到压缩的目的。那么视频信息有冗余么?当然有,视频信息作为普通的计算机信息数据一种,首先就存在着统计冗余,譬如我们发送一个视频文件给对方,我们会先尝试将其像其它普通文本文件一样用 zip 或 rar 压缩一下,减小一下空间和传输带宽消耗。其次,视频作为图像,存在空间冗余,一副数字化的图像各个像素点的值是缓慢变化的,像素值与其周围几个像素点的值具有很大的相关性,譬如一副图像的背景是一大片的红色,这很多一样的像素值就是空间上的冗余。再次,视频作为运动着的图像,存在时间冗余,即用视频采集设备拍摄的一幅幅图像之间是缓慢变化的,连续两个或多个图像之间是存在相关性的。最后,视频作为人眼视觉感知,存在视觉冗余,人眼对视频的激烈变化的部分往往不敏感,就如人耳对 20-20000 分贝以外的声音不明感一样,正是这种人眼视觉冗余,提供了我们视频有损压缩的前提条件。

    3. 视频如何压缩?

    压缩方法从大的方面分为 有损压缩,无损压缩,譬如我们用 zip 给任意文件打包压缩,压缩包能够通过解 zip 恢复成原来的文件,毫发无伤,所有数据信息没有任何丢失,这种压缩方式就是无损压缩,无损压缩有其卓越的优点:保真性,在一些卫星传图,医学 X 光图像视频等领域显得尤为重要,然后,它也有缺点,那就是压缩率不高,大概在 2 到 5 倍率 之间。

    另一种是 有损压缩,譬如压缩图像或者视频时,会根据人眼视觉感知特性,对那些人眼不敏感的数据不传输,牺牲一部分不重要的信息,来提高压缩率,当然压缩包经过解压也无法恢复那部分数据了,信息就丢失了,压缩解压后的图和原始的图是有差异的,这也就解释了 "主播看到自己的预览视频这么美,这么清晰,为什么观众看到的却有点模糊呢?"

    视频信息的压缩混合了有损以及无损压缩编码方法,一般我们直播应用中的视频压缩都是采用有损压缩方式,来提高压缩率,降低存储以及传输带宽,一般标准视频编码的压缩率能达到几十倍甚至几百倍

    4. 视频压缩编码的主流技术 H264 编码介绍

    从 上世纪八十年代的推出第一代视频编码标准 H120 开始到现在的下一代视频编码 H265 ,视频编码技术的发展一直吸引着工业界以及学术界的共同关注。其中国际组织:联合视频组(JVT)不遗余力的致力于视频编码标准的发展,不断提高视频压缩效率。

    从目前市场运用上看,无论是互联网应用,还是硬件芯片集成,最主流的视频编码技术依然是 H264,下面结合压缩理论简单介绍下 H264 所采用的编码技术

    1) 去除数据统计冗余: H264 采用两种熵编码方式: CAVLC ( 基于上下文的可变字长编码)和 CABAC (基于上下文的二进制算数编码), CAVLC 实现相对简单,编码效率高,但压缩率要比 CABAC 低 15%左右, CABAC 复杂度高,可以分场景采用不同的熵编码,让视频压缩后的平均码长接近信源熵值。

    2) 去除时间 shang 冗余: H264 采用帧间预测编码,当前像素块的编码参考之前已经编码重建帧的相应像素块,当前图像与前面的参考图像很相似(譬如视频画面相对静止)这时候帧间预测残差会很小,码率很低,相反,画面改变越大越快,帧间预测残差值就越大,压缩需要的 bit 数九越多,这也就解释了,当设定的最大允许码率一定的情况下“为什么主播的手机晃动起来,画面就有点模糊,不动就好清晰好清晰呢”。

    3) 去除空间冗余: H264 采用帧内预测编码方式,当前像素编码参考之前已经编码重建的像素值进行,如果像素变化缓慢,那么预测残差将会很小,甚至为 0 ,码率大大降低,这也就是为什么 我们传输黑色视频(手机摄像头被遮住),或者其他纯色视频,码率很低,设置的最大码率根本用不掉的原因。除此以外, H264 采用变换编码的方式,将残差从空间域利用 DCT(离散余弦变换)变换到频率域,结合差异量化编码方式,更进一步的去除空间冗余

    4) 去除人眼视觉冗余: H264 编码器的输入图像或视频的色彩空间采样格式一般为 YUV420,不同于 RGB 采样, YUV420 利用人眼视觉对像素亮度分量更敏感,而色度分量没那么敏感,进一步将图像或视频的色度分量做 2:1 的采样, 4 个亮度分量, 2 个色度分量,另外, H264 采用量化编码的有损编码方式,也正是利用了人眼视觉对高频细节部分不敏感的理论基础,将残差系数低频部分采用更细的量化参数,而高频部分则粗化量化,一般的视频压缩失真也正是这个阶段产生。

    当我们对视频压缩技术有个大概的了解之后,我们就可以回答:“如何提高观众端的视频清晰度呢?”,当给定的编码器压缩率达到极限时,我们唯一能做的就是提高视频编码码率了。

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1300 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 17:01 PVG 01:01 LAX 09:01 JFK 12:01
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86