视频压缩实际上就是视频重编码,将原视频以更低的码率重新编码,得到一个比源视频文件体积小一些的文件。这种压缩不同于RAR/ZIP方式的无损压缩,视频压缩是有损压缩、是以降低质量为前提的。视频压缩的意义是在高质量保存视频的前提下,尽可能少的占用存储空间。除了需要关注视频质量和占用空间之外,压缩的时间也需要考虑在内:视频编码是一项计算量很大的任务,需要耗费大量的计算资源,如果计算硬件性能不佳,耗费的时间也是十分可观的。尤其是高清晰视频编码,时间稍微长一些的1080p视频需要用几个小时甚至一整天时间去压缩。

传统的视频编码完全靠CPU,CPU性能越好,编码速度就越快。以目前人类能制造出的CPU来看,实现高速1080p编码还有些困难。即使是高端的4核/8核CPU最多也只能实时编码1080p视频,若压制参数提高,这些高端CPU可能还达不到实时的要求。最近几年,部分显卡厂商开始发力这一领域,比如Nvidia的CUDA和Intel的QSV。与CPU架构不同,高端显卡的GPU往往有几百甚至数千个并行计算核心,因此GPU特别适合做这种大计算量的工作。

现在家用台式机已经有至少三种方式可以编码视频了,那就是x264(纯CPU编码)、CUDA(Nvidia GPU编码)和QSV(Intel CPU+Intel核心显卡共同编码)。x264的要求是最低的,只要有CPU就可以使用,换句话说是电脑就能用;CUDA必须有Nvidia显卡才能工作,并且显卡不能太落后,至少是GeForce8之后的显卡;QSV限制条件较多,必须是Intel的IVB、Haswell或者更新架构CPU,必须使用核心显卡输出画面。

为了今后能更快更好的完成视频压缩任务,我决定分别尝试一下这三种编码方式,看看它们分别有什么特色、哪个更快、哪个质量高。从行车记录仪上找了一段比较短的1080p视频,源视频码率15MBps,用同一编码参数压缩:分辨率1920x1080,帧率30fps,格式H.264,码率1.5MBps,规格选High@L5.0,B帧6,参考帧6。这个参数编码的1080p视频,占用空间非常小,质量如何就要看这三种编码方式它们各自的能力了。测试是在HTPC上完成的,CPU型号赛扬G1610(双核@2.6GHz),显卡型号GT210(16个CUDA核心@589MHz),核心显卡是HD2500(6个EU单元@650MHz)。

压缩完成,先看一下它们的速度分别怎么样:

H264Speed

从转换报告中可以看到,QSV速度最快,达到每秒编码14.5帧的速度;x264其次,每秒11帧;CUDA最慢,每秒9.7帧。不过这时还不能直接对比速度,因为CPU和显卡的性能不在一个等级上。以上一代的千元左右CPU(E3 1230 V2,1260RMB左右)和显卡(GTX670,1299RMB左右)进行对比,粗略的估算一下:E3V2是4核心8线程@3.5GHz,以提升3.3倍计算,x264编码速度推算为36.3fps,QSV编码速度推算为47.8fps;GTX670有1344个CUDA核心@985MHz,以提升140倍计算,CUDA编码速度应该推算为1358fps。以推算的数据来看,CUDA的速度具有压倒性优势,其次是QSV,最慢的是X264。

最后再来比一比质量:

截图为同一播放器中的同一帧的一个小局部,包括路边天空、路灯等

CUDAQSVX264-Quality

截图中可以看到,CUDA的质量最差,路灯已经严重失真了,天空色块非常严重;质量稍差一些的是QSV,路灯还算清晰但缺少一块,有一部分与天空无法区分;质量最好的是x264,截图对比中能看出,x264的视频质量优于另外两个。

总结:

1.欲速则不达:质量最好的恰恰是速度最慢的,质量稍好的也恰恰是质量稍差的,速度超快的那一个也正是质量最差的。

2.若要以高压缩率节省空间,x264是最佳选择,需要一块比较好的CPU才能胜任。

3.如一味的追求高速度,CUDA是最佳选择,需要一块比较好的Nvidia显卡,压缩码率要提高很多才能保证质量不下降。

标签: 1080p, H.264, CUDA, QSV, x264

已有 28 条评论

  1. 云转码不是有很多么

    1. FROYO

      云转码的过程不可控,很多参数不能自定义

      1. 深夜逛荡,竟然看见我N久前的评论,我都不记得我来过。。。

  2. 这个的确哈。值得关注。。

  3. 你研究的这个倒是真挺透彻而实用。嗯,从安全稳定角度考虑,你现在首选储存这些视频的媒介是什么?

    1. FROYO

      因为经常用,所以要研究透彻一些嘛
      存在硬盘上就可以了吧,普通机械硬盘用上5年问题不大

  4. 看结论OK :bobo_chixigua:

    1. FROYO

      测试的目的就在于此:一次测试,结果共享

  5. 压缩干吗啊,保存原盘啊

    1. FROYO

      隔三差五就拿摄像机出去拍,每次回来都是10G+,500GB小硬盘压力山大
      再就是,摄像机拍的东西,又不是什么经典大片,太清楚也没必要,压缩一下节省存储成本

  6. 表示只有在网上发布视频前为了节省上传时间才会压缩视频。。反正传上去了也是要压缩的。。。

    1. FROYO

      据说有后黑法可以在新浪发布源码率视频,不会被压缩

  7. 目测不靠GPU的话我那个25K压x264比你的E3V2慢...

    1. FROYO

      25K不是可以OC4.5GHz嘛,不见得慢,E3V2就图一省心

      1. 试过最高到4.6 1.35v 能比较稳定 但是为了系统绝对稳定没超频

        1. FROYO

          4.6已经很猛了

          1. 对了说起来博主换nV 670了?

            1. FROYO

              没换呢,思来想去拿不定主意,一是感觉9800GT配E3V2差了一些,再就是我根本不玩游戏换GTX660只会浪费钱

  8. :bobo_chixigua: 能把2G视频压缩1G以内么?

    1. FROYO

      这个看码率,如果源码率10MBps以上,目标码率5MBps,就可以压缩到原来的一半了
      用x264压缩的话,1080p只要8.5MBps的码率就很完美了,我一般保存视频只用1.5MBps,视频质量下降不仔细看还真看不出来

      1. :bobo_buyaoa: 我是想折腾一下游戏播客,买了7000元电脑,配了20m电信宽带,上传优酷,妈蛋从20Kb只提升到120kb :bobo_weiqu: 当然比以前好多了,以前传一个视频要几百小时,现在要半天时间。 :bobo_mobai: 伤不起啊

        1. FROYO

          可以上传到新浪视频,网上有种后黑法,在视频后面加一段纯黑色,降低平均码率,平均码率降到1MBps以下新浪就不再二次压缩,直接原视频播放,清晰度很棒

          1. :bobo_jiujie: 看游戏视频每人会去新浪视频 :bobo_chijing:

        2. FROYO

          ADSL上下行不对等,一般下载几兆,上传50-100K
          7000元的电脑,高大上啊,求配置

          1. :bobo_jiujie: 电信坑B 我这坑壁的是20光钎!

            电脑型号 华硕 All Series 台式电脑
            操作系统 Windows 7 旗舰版 64位 SP1 ( DirectX 11 )

            处理器 英特尔 Core i5-4570 @ 3.20GHz 四核
            主板 华硕 Z87-K (英特尔 Haswell)
            内存 8 GB ( 金士顿 DDR3 1600MHz )
            主硬盘 希捷 ST1000DM003-1CH162 ( 1 TB / 7200 转/分 )
            显卡 Nvidia GeForce GTX 770 ( 2 GB / Nvidia )
            显示器 飞利浦 PHLC0C7 PHL 234E5 ( 23.1 英寸 )
            声卡 瑞昱 ALC887 @ 英特尔 Lynx Point 高保真音频
            网卡 瑞昱 RTL8168/8111/8112 Gigabit Ethernet Controller / 华硕

            1. FROYO

              唉,果然是没法比啊,你那一个显卡就顶上我主板+CPU+内存总价格了
              最近我也想换个好一点的显卡,在考虑OEM版1152SP的GTX660,主要是价格便宜,不到900就能到手

  9. 你研究的太杂了

    1. FROYO

      这不是我的研究项目,只是为改善生活而研究,也是为了给10年后、20年后、、、50年后的自己留下一些影像视频纪念

评论已关闭