我知道可能听起来是个很愚蠢的问题,但我用谷歌找不到答案,所以是的……
所以,我知道有像 OpenCL 和 CUDA 这样的技术,但为什么默认情况下,处理器会用于渲染视频编辑软件中的视频文件?这对我来说似乎违反直觉,显卡处理单元不用于处理图形。玩视频游戏时,GPU 还负责生成屏幕上的图像,不是吗?
再说一遍,我知道这对你来说可能听起来很愚蠢。请温柔一点°A°
编辑:我专门谈论了 Premiere Pro 等 NLE 软件的视频输出
答案1
在高清技术出现之前,CPU 可以轻松处理视频解码。大约 8 年前,高清技术开始流行,GPU 制造商开始在其芯片中实现加速视频解码。您可以轻松找到标榜支持高清视频和其他一些口号的显卡。如今,任何 GPU 都支持加速视频,甚至集成 GPU(如 Intel HD Graphics 或其前身 Intel GMA)。如果没有这项附加功能,您的 CPU 将很难以可接受的帧速率消化 1080p 视频,更不用说增加能耗了。所以您每天都在使用加速视频。
现在,随着 GPU 拥有越来越广泛的计算能力,它们也被广泛用于加速视频处理。这种趋势始于加速解码推出的同时。像 Badaboom 这样的程序开始流行起来,因为事实证明 GPU 在(重新)编码视频方面比 CPU 好得多。然而,以前这是不可能做到的,因为 GPU 缺乏通用计算能力。
但是 GPU 自中世纪以来就已经可以缩放、旋转和变换图片了,那么为什么我们不能将这些功能用于视频处理呢?因为这些功能从未被实现用于这样的用途,所以由于各种原因,它们并不是最理想的。
当你编写游戏程序时,你首先将所有图形、效果等上传到 GPU,然后只需渲染多边形并将适当的对象映射到它们。你不必每次需要纹理时都发送它们,你可以加载它们并重复使用它们。当谈到视频处理时,你必须不断地将帧提供给 GPU,处理它们并将它们取回以在 CPU 上重新编码(请记住,我们谈论的是计算前的 GPU 时间)。这不是 GPU 应该如何工作,所以性能不是很好。
另一件事是,在图像转换方面,GPU 并不注重质量。当您以 40+ fps 的速度玩游戏时,您不会真正注意到轻微的像素失真。即使您会注意到,游戏图形也不够详细,不足以引起人们的注意。有各种用于加速渲染的技巧和窍门,可能会稍微影响质量。视频也以相当高的帧速率播放,因此在播放时动态缩放它们是可以接受的,但重新编码或渲染必须产生像素完美的结果,或者至少以合理的成本尽可能接近像素完美。如果没有直接在 GPU 中实现适当的功能,您无法实现这一点。
如今,使用 GPU 来处理视频已经非常普遍,因为我们已具备所需的技术。为什么它不是默认选择,这更像是程序发布者的问题,而不是我们——这是他们的选择。也许他们认为他们的客户拥有面向 CPU 处理视频的硬件,因此切换到 GPU 会对性能产生负面影响,但这只是我的猜测。另一种可能性是,他们仍然将 GPU 渲染视为实验性功能,还不够稳定,无法将其设置为默认功能。您不想浪费数小时渲染视频,却发现由于 GPU 渲染错误而出现问题。如果您决定使用它,那么您不能责怪软件发布者——这是您的决定。