我只是出于好奇才问这个问题。
我使用 FFMPEG很多。有时,我只是选择使用传统的 CPU 编码和解码,因为它可以有效地保留原始视频质量,但有时由于编码速度太慢,这真的很不方便。
但是,如果保持原始质量对我来说不是什么大问题,我通常会选择使用 Quicksync 进行编码,因为它的速度更快。
为了突出差异,我首先使用 CPU,然后使用 GPU,在 ffmpeg 中重新编码了同一个视频(大约一小时长,1080p 分辨率)。
我的 CPU(第 8 代酷睿 i7)以大约 2 倍的速度编码视频。相比之下,我的 GPU(仅 Intel UHD Graphics 620)以大约 15 倍的速度编码视频。
速度上存在巨大差异,但当然,我牺牲了一些视觉质量(在这种情况下,差异并不明显)。现在我要回答我的问题 - 使用较新的 nvidia gpu 进行编码是否会比使用 Intel Graphics 进行编码时提供更好的比特率质量?或者所有 GPU 处理总体上都不是很好(就质量而言)?它能与 CPU 编码产生的质量相比吗?我想它会快得多。还有其他我必须考虑的因素吗?(例如使用 hdd 或 ssd,这会影响速度吗?)
我处理的一些视频很长,CPU 编码非常不方便,因为它的速度很慢,但使用 Intel Quicksync 编码的质量并不好。我只是想知道更好的 GPU 编码是否能产生与 CPU 相当的结果,同时速度也快得多。
答案1
我有两个系统都配有 Quick View:其中一个是我刚买的,还配有支持 CUDA 的 Nvidia 卡。我一直在试用这两个系统。
首先,我发现两者都能大大加快编码速度:我不确定解码速度是否更快,但它确实能减少 CPU 的负载。启用其中一个或两个后,我可以在系统上做更多“其他事情”,同时处理视频。
至于质量;我发现 QV 和 CUDA 都可以制作出与 CPU 质量相当甚至更好的视频。这包括在 40 英寸电视上以 1080p 播放的视频。
有时默认编码设置(我对 CPU 和 QSV 使用“veryslow”,对 Nvidia 使用“HQ”)会选择一组好的参数,并提供良好的视频质量。它通常也会比我在进行 CPU 编码时手动指定质量因子时选择的压缩程度更高(通常使用 Avidemux)。而且,如前所述,获得结果所需的时间要少得多:我看到了高达 20 倍的改进。
但是:有时输出质量较差。在这种情况下,我必须指定质量因子(QSV 为 -q:v,Nvidia 为 -qp)。这可能需要几次尝试,但我发现我仍然可以得到我想要的质量,而且使用硬件加速时所需的时间仍然要少得多。
这两种方法之间:x264_qsv 只有一组有限的选项来控制其编码方式。如果您愿意,h264_nvenc 有更多选项和“调整”可供使用。还有另一个决定因素;有许多过滤器将使用 cuda / nvenc / 不管现在叫什么,来执行诸如使用硬件加速进行去隔行和调整大小之类的操作。据我所知,没有使用 QSV 的过滤器。
Avidemux 的开发人员也曾表示,他正在考虑启用一种硬件加速,而这种硬件加速很可能是 Nvidia,因为使用 Nvidia 的人更多,或者至少了解 Nvidia 的人更多。直到最近我才知道英特尔在某些处理器中添加了 QSV,但并没有得到太多宣传。因此,您可能需要检查您喜欢使用的软件,以了解它们支持哪种软件。我发现有几个程序(HandBrake 就是其中之一)同时支持这两种加速。但同样,Nvidia 的 CUDA 似乎比 QSV 更有潜力。