视频批量处理开显卡加速:能快多少、什么时候别开
批量处理视频的软件里,几乎都有一个「显卡加速」或者「硬件编码」的开关。有人打开就再没关过,有人一直不敢碰。这篇把它讲透:显卡到底快在哪一步、画质的代价具体出在什么画面上、哪几种活该老实用 CPU,以及为什么判断能不能用只能靠实测,不能看显卡型号猜。看完你能自己决定这个勾该不该打。
先分清楚:这一步到底编不编码
在讨论显卡之前,得先分清一件事:你手上这批活,到底需不需要重新压一遍画面。切视频有两条完全不同的路。
第一条叫「不编码分割」,也有软件写成「无损分割」。它做的事情本质上是搬运:把原文件里的画面数据原样复制到新文件里,一个像素都不重算。所以它快到接近拷贝文件,画质和原片一模一样,风扇都不带转的。它的代价只有一个——只能在关键帧上下刀。视频不是每一帧都存了完整画面,它每隔一两秒才有一张「完整的图」(关键帧),中间那些帧只记录了跟前一帧比变了什么。从两个关键帧中间硬切开,播放器拿不到起始的完整画面,开头就会花屏或者跳一下。所以软件只能把你填的切点挪到最近的关键帧上,实际切点跟你填的秒数差个一两秒是正常的,段数也可能比你预期的少。
第二条路是重新编码:把画面完整解开,再压一遍。这一路慢得多,但换来两样东西——切点想落在哪就落在哪,精确到帧;以及码率、清晰度、体积全部可控。显卡加速只对第二条路有意义。它加速的正是「压一遍」这个动作。
所以第一个判断从来不是「要不要开显卡」,而是「这活要不要重新编码」。把一小时的会议录像切成 20 段归档、把下载的素材粗切成片段丢进素材库,这些都不需要精确到帧,勾无损就结束了,显卡开不开完全不影响。
先问自己这一句:切点差个一两秒,会不会影响我用这批素材?答「不会」,就选无损,本文剩下的内容你都可以跳过——没有任何显卡能比「不编码」更快。答「会」,再往下看。
CPU 软件编码和显卡硬件编码,差的是什么
软件编码是用 CPU 一步一步算出来的。编码器(最常见的是 libx264 这一类)在压每一帧的时候,可以慢慢试很多种压法:这块画面用哪种预测方式更省、这段运动怎么描述最紧凑、哪里可以少给点码率而人眼看不出来。试的次数越多,结果越好,也越慢。
硬件编码不一样。显卡里有一块专门干这件事的独立电路,它的压法是设计的时候就固定在硅片上的,只留了有限几个档位给你调。它不需要「试」,直接按既定路线冲一遍就出来。
拿个不太严谨但很好懂的比方:CPU 编码像一个能加班琢磨的老师傅,同样一块料他能做出更细的活儿,但一件一件慢慢来;硬件编码像流水线上的冲压机,速度快得多、稳定、不累,但同样一块料出什么样是固定的,不会因为你多等它十分钟就更好看。这两句话基本能解释后面所有的取舍。
这些编码器在业内的名字你可能在别的软件里见过:libx264 走 CPU,h264_nvenc 是 NVIDIA 显卡的,h264_qsv 是 Intel 核显的,h264_amf 是 AMD 的,h264_videotoolbox 是 Mac 上 Apple 芯片走的那条。它们全都是 ffmpeg 里的编码器名字。ffmpeg 是一个开源的视频处理工具,几乎所有视频软件底层都在用它,老黄牛的镜头分割和视频分割也是调本机的它来干活,所以这些名字在哪套软件里的含义都是同一个。
能快多少:怎么给自己这台机器量一个数
网上的评测数字参考价值有限,因为差距取决于太多东西:显卡的代次(同一个牌子,新几代的编码单元性能差好几倍)、源视频的分辨率(4K 比 1080p 拉开得多,因为 CPU 在高分辨率上掉得更快)、并发开了几路、素材放在固态还是机械盘上。同一个软件、同一批素材,换台电脑结论就变了。
能说的只有量级:1080p 重新编码,硬件编码通常能比纯 CPU 快好几倍;4K 素材差距更大。但也确实有开了几乎没变化的情况,几乎都是下面三种之一:这批任务勾了无损分割根本没在编码;瓶颈根本不在编码而在读盘和解码;并发开得太高,任务在互相排队。
与其猜,不如花十几分钟自己量一次。方法很笨但很准:
- 挑一条真实素材,五分钟左右、内容和你平时处理的那批一致(口播就用口播,运动镜头就用运动镜头)。
- 参数全部一样,只改编码器:一遍选 CPU,一遍选检测出来的显卡编码器,两次都跑完。
- 记三个数:耗时、输出文件的体积、打开看一眼画质有没有明显区别。
这三个数出来,你就有了属于自己这台机器的答案,以后所有批量任务都按这个答案配就行,不用每次纠结。
| 做法 | 速度 | 画质 | 切点准不准 | 适合什么活 |
|---|---|---|---|---|
| 不编码分割(无损) | 最快,接近拷贝文件 | 和原片一模一样 | 只能落在关键帧,可能差一两秒 | 留档、粗切、整理素材库 |
| CPU 重新编码 | 最慢 | 同码率下最好 | 精确到帧 | 成片终稿、要压体积、画面复杂 |
| 显卡重新编码 | 通常是 CPU 的好几倍 | 同码率下略差,靠加码率补 | 精确到帧 | 大批量、赶时间、中间产物 |
画质的代价,具体出在哪种画面上
「硬件编码画质差」这句话说得太笼统,实际用起来它有两个非常具体的表现,知道了就好判断。
第一个表现:同样的码率下,动得厉害、细节密集的画面更容易糊。树叶晃动、水花、下雨、人群走动、快速摇镜和推拉——这类「整个画面到处都在变」的镜头,是编码器最费码率的地方,也是硬件编码和 CPU 编码拉开差距的地方。反过来,固定机位的口播、屏幕录制、PPT 讲解,这些画面大部分区域每一帧都没变,两种编码器的结果几乎看不出区别。所以同一台电脑上,你处理口播素材时觉得显卡编码完全够用,换成运动素材就觉得糊了,这不矛盾,是素材类型决定的。
第二个表现:CRF 这个数字在硬件编码上不完全是一回事。CRF 是「你说要多清楚,码率我自己看着给」的模式,数字越小越清楚、文件越大,可以填 0 到 51 的整数,CPU 编码上 23 是最常用的中间档。但显卡编码器对同一个数字的理解和 CPU 不一样,同样填 23,出来的体积和观感很可能对不上。所以换到显卡以后,别假设参数能直接照搬,重新拿一条素材试一遍:觉得糊就把 CRF 往小调两三档,或者干脆改成固定码率(这一档默认 6800 kb/s,可填 200 到 100000),把体积和清晰度直接锁死,心里更有数。
一个容易忽略的坑:素材如果还要二次处理——先切片、再去字幕、再加字幕导出——那它每过一道就被压一次。中间环节用硬件编码省时间没问题,但每一次的损失会叠加,最后一道出成片时把编码器换回 CPU、或者把码率给足,能明显减少累积的糊。
这四种情况,老实用 CPU
显卡加速不是越开越好。下面四种情况,多花的那点时间是值得的。
- 要交付的终稿。成片只出一次,慢十分钟无所谓,画质别赌。批量处理中间产物用显卡,最后一道用 CPU,是个很省心的分工。
- 要把体积压到某条线以下。比如平台限制单个文件大小、或者你要控制上传时间。同样的清晰度硬件编码需要更多码率,压体积正好是它最不擅长的事。
- 画面细节复杂、运动剧烈。风景、运动、舞台、游戏录屏这类素材,硬件编码在同码率下的损失最明显,后面每二压一次还会放大一点。
- 显卡编码一报错就别硬扛。把编码器换回 CPU 再跑一遍,是最省事的排障动作——先把活干完,再回头查驱动。
还有一类情况不是「该不该」而是「能不能」:笔记本插不插电源、显卡驱动是哪个版本、系统里有没有别的程序(直播软件、录屏软件、另一个视频工具)正占着编码单元,都会影响同一台机器今天能用、明天报错。遇到这种情况不用怀疑自己,换回 CPU 把这批跑完,回头再排查。
为什么必须实测检测,不能看型号猜
很多人查一下自己显卡的型号,看到规格表上写着支持某种硬件编码,就认定「我这台肯定能用」。结果一跑就报错。原因是型号只说明这块芯片设计上具备这个能力,真要用起来,中间还隔着好几关:
- 驱动版本。编码单元要靠驱动暴露给软件,驱动太老、装的是系统自带的通用驱动,经常调不起来。
- 软件这一侧有没有编进去。同一个 ffmpeg,不同的构建可能没有编译进对应的编码器,有硬件也用不上。
- 笔记本的双显卡切换。机器上同时有核显和独显,任务被系统分到了哪一块,跟你以为的往往不是一回事。
- 虚拟机和远程桌面。这两种环境下经常拿不到硬件编码单元,物理机上好好的,远程连上去就用不了。
- 被别的程序占着。编码单元的并发路数是有限的,别的软件先占满了,你这边就排队或者直接失败。
所以正确做法只有一个:让软件真的去调一次编码器,能跑通的才算数。老黄牛的镜头分割和视频分割里那个「检测本机显卡」按钮就是干这个的——它列出来的是实测能用的编码器,NVIDIA、Intel、AMD、Apple 里哪几个真的跑通了就列哪几个。列表是空的,说明这台机器现在就是用不了,选 CPU 把活干完,比对着型号硬填一个名字上去强。
说在前面的一条实话:主安装包当前为 v0.3.5。Windows 的 CPU 真实媒体流程已经通过验证,但 NVENC、QSV、AMF 仍缺实体机器覆盖验收;显卡编码出问题时可切回 CPU 完成任务,只是耗时更长。macOS 端面向 Apple 芯片,VideoToolbox 已做过真实流程验证。最终能否使用硬件编码,仍以软件在本机的检测结果为准。
具体设置顺序:六步走完
把上面这些落到实际操作上,就是下面六步。这个顺序在任何一款批量视频工具里都适用,参数名可能叫法略有不同。
- 先决定这批活要不要重新编码勾着「不编码分割 / 无损分割」的时候,画面数据是原样复制过去的,根本没走编码这一步,显卡设置一点作用都没有。只是把长视频切成小段留档,就到此为止,不用管显卡。判断标准:切点差一两秒能不能接受。
- 关掉无损,选码率模式需要精确切点或要改画质、改体积,就关掉无损分割。这时候会出现码率选项:动态码率 CRF 默认 23,可填 0 到 51,数字越小越清楚、文件越大;固定码率默认 6800 kb/s,可填 200 到 100000。不确定就先用默认 CRF 23 跑一条看效果。
- 点「检测本机显卡」让软件真的去调一次编码器,能跑通的才会列出来。列表里有就选一个,列表空的说明这台机器现在用不了硬件编码,老实选 CPU,别硬填一个名字上去。换了显卡驱动、换了电脑,重新检测一次。
- 拿 3 到 5 条素材小批试跑别一上来就丢 2000 个视频进去。先跑三五条真实素材,跑完打开输出目录核对三件事:时长对不对、声音在不在、画面有没有明显发糊。试跑用的素材要和正式那批同类型,别拿一条纯色片头试。
- 调并发数并发默认 3,可填 1 到 8。并发不是越大越快:机械硬盘、外置盘上调高了反而互相抢读写,显卡的编码单元也会排队。先用默认值跑一批,再上下各试一档。CPU 编码时并发影响更大,显卡编码时磁盘往往先成为瓶颈。
- 做一次 CPU 与显卡的对比再定下来同一批素材、同样参数跑两遍,一遍选 CPU 一遍选显卡,记下两次耗时和输出体积。十几分钟就能得到属于你这台机器的答案,比看任何评测都准。这个对比做一次就够,结论能用很久。
一句话总结:能不编码就不编码;必须编码时先检测再选显卡;批量的中间产物交给显卡,要交付的终稿交给 CPU。按这三句配参数,绝大多数情况都不会踩坑。
常见问题
我的电脑没有独立显卡,还能开硬件加速吗?
多半可以。Intel 的核显和 Mac 上的 Apple 芯片本身就带编码单元,很多没有独立显卡的机器照样能用硬件编码。判断方法只有一个:点一次检测按钮,能列出编码器就能用,列不出来就用 CPU。
开了显卡加速,为什么速度没什么变化?
常见三种原因。一是这批任务勾了无损分割,压根没走编码,显卡设置不起作用;二是瓶颈不在编码而在读盘和解码,素材放在机械硬盘或外置盘上尤其明显;三是并发开得太高,任务在排队。先把并发调回 3,单条素材 CPU 和显卡各跑一遍对比,再下结论。
显卡编码出来的视频画质会明显变差吗?
看素材。固定机位的口播、录屏、PPT 这类画面基本看不出区别;树叶、水花、人群、快速摇镜这种到处都在动的画面,在同样码率下硬件编码会糊一点。介意就把 CRF 调小几档补码率,或者改用固定码率把体积锁死;要交付的终稿直接用 CPU 编一遍最稳。
显卡编码报错、任务失败怎么办?
先把编码器换回 CPU 再跑一遍,把活干完。然后再排查:更新显卡驱动、关掉正在占用编码单元的直播或录屏软件、重新点一次检测。另外老黄牛的 Windows 版目前 CPU 流程已经跑通自动化测试,实体显卡加速仍在验收,Windows 上遇到问题换回 CPU 是最省事的做法。
无损分割和显卡加速,哪个更值得开?
只要不需要精确切点,先用无损。它比任何显卡都快,因为它根本不编码,画质也一点不掉,代价只是切点会落到最近的关键帧上、跟你填的秒数差几秒。等到需要精确到帧、需要改码率或改体积的时候,再关掉无损,这时候显卡才有用武之地。