大型游戏录屏的压制基本理论
❀原创教程,转载请注明链接和作者
大型游戏录屏是一种特殊的视频压制用例。其特点有:
- 高实时性
- 编码速度必须跟上 GPU 渲染出新画面的速度
- 如果编码速度跟不上,那么越来越多的帧会被存入缓存,当达到编码器程序可用的内存上限后,就会开始丢帧、丢场景了
- 高帧率
- 大型游戏的视角由鼠标控制,造成了高速的大面积背景位移画面
- 除“微软模拟飞行”以外,一般至少要录制 50~60fps 才相对流畅,而实际上只有 90+fps 才适合高速大面积背景位移画面
- 低 CPU 算力
- 虽然游戏平时不会大量占用 CPU,录屏的视频编码程序也不会;但到了画面复杂的场景就不一定了
- “大场面”下,CPU 需要计算大量角色与 NPC 和场景的互动,其复杂的动态信息也会让运行在 CPU 的软件编码器占用飙升,造成资源挤兑
- 低显存
大多数 GPU 硬件评测不考虑边游玩边录的用例,而新的大型游戏已经开始原生使用光追渲染技术,因此:
- 如果不购买最新的大显存显卡,则不但显卡录屏会越发渺茫,游戏本身也会因为“爆显存”而大量丢帧
- PCIe 通道少
- 绝大多数中低端主板,尤其是 AMD 平台的主板面临 PCIe 通道不足的问题
- 除了给显卡的 PCIe x16 槽以外,剩下的 PCIe 通道都分给了 NVME M.2 SSD,而不是采集卡或副显卡
- 虽然也有 PCIe x8、x16 长度的槽,但其中的针脚只有 x1 和 x2,这使得采集卡、副显卡会面临输入输出带宽不足的问题
- 低成本
- 绝大多数游戏玩家使用 GTX 1060 6GB、RTX 3060 6GB 显卡,并无“加钱解决问题”的选项
- 随着 NVIDIA 显卡的供电接口质量问题和昂贵价格,大多数玩家将会转向其他平台
- 采集卡并不便宜,且用途单一
- 易分享
- 如果录制有损低压缩、无损压缩或未压缩的视频,就会产生体积大,需要在录制后进一步压缩的视频,而用户不习惯这种操作
- 如果用户还希望剪辑软件兼容(如 Adobe Premiere),那么一开始就需要使用画质更差的旧有损编码格式,或体积更大的旧无损编码格式
- 由于兼容性广泛较差,因此不能使用可变帧率(VBR)录制
根据压制三角形定理,在速度无法妥协(实时录屏)的情况下,我们可以选择妥协画质、文件体积,或者升级硬件到一定程度来保证录屏的流畅清晰。
为了确立真正适用与自己的资源分配,了解电脑的存储资源和算力资源便是关键。
存储资源
主要分为带宽和容量两部分,其中带宽决定了每秒可以写入多大的数据,所幸视频是连续大文件写入,几乎不存在随机读写性能需求。
存储技术带宽
实则数据详见 TomsHardware。
- PCIe 4.0x4 SSD:约 63Gbps(8GBps)
- PCIe 3.0x4 SSD:约 31Gbps(4GBps),同时也是 PCIE 4.0x2 SSD 带宽
- 3840x2160x120 未压缩 RGB 3×8bit 视频流 :约 24Gbps
- 3840x2160x90 未压缩 RGB 3×8bit 视频流 :约 18Gbps
- 3840x2160x120 普通无损压缩 YUV 8bit 视频流:
- 4:2:0:约 7.2 Gbps
- 4:2:2:约 9.6 Gbps
- 4:4:4:约 14.4 Gbps
- SATA3 SSD:有效带宽约 4.8Gbps
可以看到,只要不用 SATA SSD,4k120 视频流就可以随便写,甚至对于寿命长到用不完的 eMLC SSD 来说,这中负载和磨损就是预期内的工况。
- 当然,24Gbps 的写入量太过夸张,只要 300 多秒就能达到 8000Gb(1TB)。
HDMI 接口带宽(对比参考)
实际上,带宽问题更多的位于显卡到显示器上。很多用户往往会抱怨现在的 4k144 显示器不支持新版本的 DisplayPort、HDMI 接口,导致显示器成为带宽瓶颈,这是因为视频的数据量本身就非常庞大导致的:
HDMI Version | Max Resolution | Max Refresh Rate | Bandwidth |
---|---|---|---|
HDMI 2.0 | 4K @ 60Hz | 60Hz | 18.0 Gbps |
HDMI 2.1 | 8K @ 60Hz | 120Hz (4K) | 48 Gbps |
HDMI 2.1a | 8K @ 60Hz | 120Hz (4K) | 48 Gbps |
注:1MB = 8Mb;1GB = 8Gb。
算力资源
硬件编码算力
占用 CPU(核显,如 QuickSync)与 GPU 附带(如 NVENC/VCN)的运算单元、视频采集/加速卡的 ASIC 芯片
- 优点:
- 同成本下算力更高,延迟更小,能耗极低
- 缺点:
- 压缩算法逻辑固化在电路里无法设置
- 厂商为了平衡功耗、成本和实时性,会牺牲算法实现的复杂度,导致画质和压缩率就目前来说一直劣于软件编码
- 不同厂商,不同代际产品的画质和压缩性能完全不同
- 显存不够
软件编码算力
能够占用 CPU 核心、GPU NVENC-CUDA/AMF-ROCm/OpenCL 通用计算单元,或高端视频采集/加速卡 FPGA 芯片的编码器
- 优点:
- 算法由软件定义,因此用户可以对画质、体积做出取舍
- 缺点:
- 同成本下算力更低,发热更高,延迟更高
- GPU 通用计算单元可能会与游戏渲染产生资源挤兑
- 显存不够
妥协方案
妥协体积
妥协体积是唯一能获得高画质录屏的方案,声称录制 4K,但录制码率低于 300Mbps 红线的游戏录屏都是中低画质,这是因为高实时性的限制条件注定了编码器根本没有时间进行合理的码率分配。
- 录制无损压缩视频
- 包括 NVENC-h265-lossless、FFV1 等速度快的编码器,以及编码速度慢的 ProRes、DNxHD(OBS 可以通过插件支持)、x265 格式
- 在 x264 编码器中设置恒定压缩强度 CQP 模式(qp=0)实现无损压缩
- 注意:CQP 模式无法向 CRF 模式一样分配码率到对画质有贡献的地方,因此除了用于无损压缩以外不适合其他用途
- x264 中需要设置 trellis=2 来避免使用默认画质极差的死区量化器,较新的编码没有这个问题
- 使用古早一些的 FRAPS 软件录屏
妥协体积缺点
- 工作流变更:
- 需要在完成录制后离开电脑并进行转码才能缩减视频体积到合适的大小,否则体积过大无法分享,或剪辑软件不支持该格式
妥协画质
如果希望 SSD 能用的久一些,那么选用有损编码,妥协一点点画质,码率就可以下降到 0.1~0.3Gbps(100~300 Mbps)。但是上面也说了,算力和显存必然会因为游戏和硬件性能受限,因此实际的妥协方法有:
- 降低帧率到 60fps 或更低,从一开始就减少录制的带宽和算力占用,当然,这样做的缺点也自不必说——竞技性的游戏中导致画面损失重要信息。
- 降低分辨率,虽然这样做会损失很多画面信息,但 1280x720~1920x1080 至少还是网络视频与视频剪辑软件都兼容的大小
- 关闭游戏中的胶片颗粒加噪效果
- 关闭视频编码器的码率缓冲区(Video Bitrate Verifier、VBV)心理视觉优化(PSY)、率失真优化(RD)等不适合录屏工况的功能,确保画面流畅(设定编码器到快速预设时关闭)
- 关闭或降低视频编码器中“需要等待上个编码步骤完成才能开始”的压缩功能,如使用 x264 的零延迟(zerolatency)预设,使用低强度动态搜索
妥协画质缺点
- 快速预设下,视频编码器不再是进行精确统计后做出决定,而是有些“胡来”的判断码率分配
- 即:码率高,画面糊
妥协成本
- 购买采集卡
- 成本中高,用途单一
- 升级 CPU
- 需要多核 Cinebench R23 30000+ 分,这个级别的处理器价格偏高,但好在用途广泛
- 往往意味着需要更换主板
- 购买副显卡
- 成本高,用途比购买采集卡广泛
- 需要注意主板 PCIe 通道布置(注意:不是 PCIe 接口长度,而是接口里的针脚数量)是否支持添加副显卡,至少 PCIe 4.0x4
- 可以在录屏的同时提升帧数,还降低主显卡成本,如主显卡为 AMD RADEON 6000~7000 系、副显卡运行 DLSS/XeSS 插帧并使用 NVENC/QuickSync 录屏
- 升级显卡到最新世代
- 成本最高,但用途不像 CPU 一样广泛
- 对于 1920x1080 游戏录屏,建议显卡显存至少 12GB,建议 16GB
- 对于 3840x2160 游戏录屏,建议显存至少 18GB,建议 24~32GB
- 英伟达显卡,尤其高端显卡只能使用有安全隐患的 12VHPWR 接口
妥协成本缺点
- 很遗憾,妥协成本本身对大多数玩家来说是不存在的选项
大型游戏的录屏就是这么困难,但即使是这样,我们仍然可以通过压制三角形来找出妥协或优化的方向。降低分辨率、帧率、使用快速预设来保证不卡顿;使用较高码率或无损压缩,同时准备足够的存储空间与存储散热;如果打算升级硬件,则也也有不少成本可控的方案可以考虑。
附录:录屏须知
.mp4
封装格式不适合用于录屏,一旦程序出错就会损失整个视频流。可以先录制到.mkv
,录完后再转换封装文件到.mp4
- 直播和录屏虽然都对编码速度有严格要求,但二者的主要区别就是直播有严格的码率限制,但录屏用例下没有这种限制
- 所以,录屏的视频编码可以相比直播有更高的画质——不使用 CBR、ABR 等码率优先的模式
打赏信息
在线丢人,求个打赏,支持一下饭费 T_T