Loading
52

视频压缩入门——如何给你的学习资料腾出大house

大家好啊,今天做一个视频压缩的科普贴,方便给硬盘不够的站友腾腾空间,事先说明本人并未专门研究过这方面的详细内容,如有错误,欢迎指正。如果你只关注结论,建议只看红字 :1: 
影响一个视频的大小主要有这几个因素:码率 分辨率 帧率 编码器选择,其中为了尽可能保持高质量近似无损的压缩,我们一般不会去更改分辨率以及帧率,那么码率和编码器就是我们需要去更改的了
首先,先谈编码格式。如今最常用的几种。分别有h264 h265 av1,h264产生于2003年,目前仍是最常用的视频编码标准,目前绝大多数在线网站仍使用h264编码,包括红p和别的平台的作者,但是由于产生时间长,压缩率如今看来不是很高,h265产生于2013年,是h264的继任者,据官方称,H.265 在压缩效率上比 H.264 提高了大约 50%,这意味着在保持相同画质的情况下,H.265 视频的文件大小可以减少一半。实际虽然没这么夸张吗,但比h264也好很多了。至于av1产生于2018年,据说同样的体积,相比h265,它能够提供20%到30%的画质提升,由于相比h265高额的版权费,av1开源的特性,如今各大平台如奈飞 b站 油管都广泛使用了av1。
其次各个编码器一般来说有软件编码也就是cpu编码以及硬件编码也就是显卡编码的差别,其中二者的区别简单概括就是,在同样码率下cpu的优势是质量更好,大小更小,而显卡的优势是速度更快,一句话cpu是慢工出细活,显卡是速度似火箭。
在视频压缩中,我不推荐使用h264以及av1,h264因为时间过于久远,且目前绝大数作者的源视频就使用h264,那么你在压缩后往往并不能获得一个质量较好或是体积较小的视频,因此我更推荐使用h265编码,在我实际测试中,它可以帮我节省40%甚至90%的空间,而视频质量不管是主观截图以及vmaf还是用客观的psnr ssim评测,都基本可看作无损,至于av1我并不推荐使用,首先av1软件编码速度极慢,不管是libaom rav1e 还是svt-av1,那个速度实在太慢了,显卡编码速度倒是很快,但是目前只支持40系n卡以及intel的独显和最近的几代核显,av1的质量只在极低码率下会比h265有优势,一旦码率在1500以上,表现会大幅下跌,所以一我推荐你可以在压缩一些简单的2d动画时使用它,比如里番这类。而且请注意av1编码的视频,你需要充分考虑设备的解码支持情况,以我的手机是晓龙888为例,它并不支持硬件解码av1,在播放的时候查看功耗,h265硬解功耗有1.5w左右,而av1在5w左右,都快赶得上玩米家游戏的功耗了。
说完了编码器选择,下面是具体的压缩教程。目前市面上可以用的压缩软件有很多,我在这里推荐使用shannencoder,他是一个优秀的批量压缩软件

首先打开软件,点击快速设置,在里面的编解码器中我们能看到这些,其中不带括号的av1 h265 h264是采用软件编码,带括号中的nvenc qsv amf分别是英伟达 因特尔 amd的硬件编码,如果是使用硬件编码 那么你有什么显卡就选择编码器,其中注意amd的显卡编码质量明显差于其他两家一些。

在编码器下方有质量 量化器 比特率三个选项,其中质量我建议只在使用cpu软件编码中启用,而量化器则只在硬件编码中启用,如果你想严格控制视频的体积那么请选择比特率选项。但是就我个人而言,在做本地存储中,我不会使用比特率模式,我更看重视频的整体质量,选择比特率会难以控制。在不同编码器中点击配置会看到对应的设置,cpu编码推荐使用crf23作为标准值,大致等于视觉无损压缩,其中的配置如果想直接省事就用slow 旁边的main10profile勾选,10bit输出可略微减小体积。

如果是显卡编码,cqp通常选择24,这是一个标准值,点击配置其中的main10代表10bit视频深度输出,这个推荐始终启用,级别保持auto 预设选择p5或者p7,二者差距很小,推荐p5,在4k视频编码中可以跑到100以上的fps,在1080p中更是可以达到三四百fps,选择p7速度大约会下降50%。

其他的帧率 图片大小什么的一般不要动,最下面的是音频编码选择,一般直接用复制就好,在主界面的偏好设置-解码器设置中推荐把h264 hevc/h265 av1的设置调整为sw,即软件解码,这样可以最大化速度,缺点是cpu占用会上升些。

下面是各编码器速度对比

以我自己使用8845h+rtx4060为例子,贴一个简单的速度对比图。

首先是1080p分辨率的视频

x265 cpu编码 crf23速度在28fps左右

然后是nvenc显卡编码

cqp p7预设,速度在200fps上下

p5预设,速度直接翻倍! :22: 要注意p5和p7预设反应在vmaf跑分中只有0.2左右的差距,区别很小

下面是4k分辨率视频对比

x265 crf24,只有4到5的fps 这个速度已经很慢了

nvenc cqp24 p5,可以看到也可以达到100fps以上,这个速度是cpu的25倍以上了,而且在4k高码率情况下 cpu和显卡编码的质量会被大幅拉到同一水平线,如果你不是强迫症用户,4k视频就不要用cpu压了 :33: 

最后是ffmetrics这个工具的介绍,这是一款专门用来对比单个视频不同编码器预设参数下质量的对比软件,通过它,你可以获得详细的视频参数比较,

里面的psnr ssim vmaf分别是不同的视频质量评估标准,其中的vmaf更贴近人眼感受,偏向主观,vmaf在95分以上大约可认为无损,如果视频分辨率是4k及以上,在model里面选择vmaf_4k_v0.6.1.这个视频中我用h265 nvenc cqp24对比x265(cpuh265)crf23 自定义参数,可以发现后者比前者高了2.5分左右,但是实际的视频大小上,cpu是55.5 显卡是47.9,之后我调整cqp为22,视频大小为58.6,vmaf得分为95.6,相比cpu编码仍有一定差距,因此也印证了我们之前的结论,即同等体积,cpu编码中等预设画质大于显卡编码,同等视频质量,cpu编码的视频一定比显卡更小。但是请注意,对于各种各样复杂度的视频,你没办法使用一个或几个码率做到一劳永逸,所以我仍推荐你使用cpu crf23或是显卡cqp24,他们都能提供给你一个不错的质量,视频大小可以做到相比原视频大幅减少。当然crf或是cqp并不是适用于所有视频,他们对于原始未经压缩的视频友好,如果是一些网站下载已经二压三压的视频,那么还是选择码率更好,至于多少,一般粗暴地选原来的一般就可以

软件

  文件来源:

  更新时间:2024年10月07日

  文件说明:解压码:无 提取码:nkef