H.264虽然已经统治了视频编码领域十多年,但是依然在我们的日常生活中扮演着重要的角色,它依然是现在兼容性非常好的主流压缩标准。但H.264 AVC当然已经年迈,业界早已为其准备了继承者,包括因为昂贵的授权费而备受诟病却让人无可奈何的H.265 HEVC,还有以免费开放为卖点却没有获得太多支持的AV1。以我对互联网资源的经验,相比AV1,目前以HEVC压制的视频占多数,但是并不是所有的设备都能够硬解码HEVC,以我的几个设备为例,我的华为Mate20Pro能够硬解码1080P的HEVC Main10配置的视频,但我的Mate9就不能硬解,我的4代酷睿i的笔记本也不能解码(核显是HD4600),而我的另外两张显卡(RTX2070和RX580)就能硬解。
为了解决这些不能硬解HEVC视频的问题,我尝试对视频进行转码,所以我使用了开源转码软件Handbrake,这个软件的功能很强大,整合了很多的实用的编解码器,尤其是同时支持英特尔QuickSync、AMD VCE和英伟达NVENC硬件编码器,这些硬件编码器可以非常高效地编码视频,也就是传说中的硬件压制。
(这里说一下,视频的转码其实是一个先解码后编码的过程,所以除非是无损转码,否则肯定是会有质量损失的。)
当然大家也有耳闻,就是硬件压制的视频质量比较差,这个我倒是不怎么在乎,因为我更在乎效率,要是靠x264压制的话,一部12话的动画压完得几度电,这根本不环保,也太消耗时间。
我用来做实验的是这部动画,《Slow Start》的BDrip,1080P分辨率,x265 Main10压制,FLAC的音频流,mkv格式但不带字幕,我这次也要将ass字幕烧录进去,方便播放。
首先我用Handbrake的x264将第2话转码成mp4格式、AVC,编码器配置High,级别Auto,视频码率5000kbps,aac音频。使用的是我的老电脑,速龙II X4 605e,四核心,使用2-pass方式压制,大概花了3个多小时。
之后我改用硬件转码,使用的是AMD的RX580的VCE编码器,视频码率还是5000kbps,VCE的话不支持2-pass,也省下了不少的时间,编码器预设是Balanced,其他配置和上面相同。因为Handbrake不支持AMD显卡的硬件解码(只有英伟达显卡才支持硬件解码),因此解码还是要靠CPU,但CPU并没有吃满,所以可以看作是没有解码的瓶颈。转码的速度非常快,能达到55FPS,而源视频的帧率是23.976,也就是说能够以2倍以上速度转码,十几分钟就转码完成了。
不过一看成品,质量就比较惨了,块状噪声非常明显,5000的码率愣是搞出了1000码率的感觉,惨到只能勉强看(这还是动画,对块状噪声不那么敏感),要是Speed预设的话肯定会更惨。
但是我并没有放弃,因为编码器预设中还有一个Quality,我试了一下用这个预设效果如何。还是那些参数,这次换成Quality,比较有意思的是编码速度似乎并没有变慢,还是每秒55帧左右,完成时间也差不多。这次压出来的效果明显要好很多,至少有3000码率的感觉了。
所以可以得出一个结论,虽然硬件压制可能不如CPU压制的效果好,但只要牺牲一下码率(提高码率),效果应该不会太差,但编码器预设一定要选Quality,这并不会多花费太多时间,但是能够显著提高质量。
其实硬件编码对显卡的负荷非常低,因为流处理器单元不干活。只是GPU的部分电路工作,因此功耗很低,对散热的压力也很低,显存占用也很低,只是因为Handbrake不支持硬件解码,所以CPU的负载高一点,但一般不会吃满主流的CPU(我用的CPU是E3 1230V3,实际负载只有40%左右),可见瓶颈主要还是在显卡上,当然也可能是我用的显卡比较老一点,毕竟RX580都有近10年的历史了,所集成的编码电路也比较老,换成一些比较新的显卡的话可能会更快一点。
这里说一下Handbrake这个软件,这个软件虽然功能很强大。而且也开源免费,但是确实不太人性化,压制一个视频时需要调节大量的参数,所以最好是保存一下常用的预设,否则每次压制视频都要忙活半天,而且它还不会保存你上次的设定,一些设定默认就很不“科学”,例如默认是CFR(可变帧率)峰值帧率压缩的,这样压出的视频可能会兼容性不好,经常出现音视频不同步的问题,帧率设置也是默认30,而不是更实用的“与源相同”。而且不知道为什么,无论怎么设置,我的HD4600核显的笔记本就是用不了英特尔QuickSync,可能我的旧笔记本的故障太多了吧。
还有就是Handbrake的一个bug,当你把视频的音频流压制成AAC时,无论码率调多高,输出的视频的音频码率也不会超过300左右,例如设定为320,输出就是288,不知道这个bug是因为什么。
2023-12-28
2024-04-05
2024-05-06
系统资讯推荐
win10系统推荐
系统教程推荐