视频编码实测档案 · Intel Arc A380 QSV

UniversalEncoder

单文件、中文交互的批量视频压缩工具。以 ffmpeg 为执行层,封装 Intel QSV 与 NVIDIA NVENC 两条硬件编码路径, 覆盖参数选择、批量并发、进度显示、编码后自检与失败重试。默认参数并非推荐值照搬, 而是本文档记录的全部对照实验所得(结果见结论)。

当前版本
v87
2026-11 · 纯清理版
代码规模
6,101 行
单文件,无第三方运行时依赖
硬件平台
QSV / NVENC
自动检测,含软编降级
自动自检
5 项
上限 / 地板 / GOP / faststart / 音频

GitHub · UniversalEncoder GitHub · DanmakuRepo 全部实测数据 →

使用流程

  1. 把待处理视频放入脚本所在目录(或其子目录,可递归)
  2. 执行 UniversalEncoder.py,按菜单确认参数
  3. 通常无需修改:平台与质量档位自动检测,默认走 Q30(Intel)/ cq36(NVIDIA)
  4. 结束后查阅 _encode_run.log,每行含体积变化、视频码率、质量值、耗时

失败会记录原因,单文件最多重试 3 次。安全模式默认开启:原文件保留, 产物写入 output/,确认无误后再考虑替换。

菜单【9】的「现场实测」分支在简单素材上会选中 veryslow 档,实测曾产出 VMAF 19.88 的异常结果。 该分支未验证,不建议使用。

菜单结构

菜单项可选值
6. 质量Q24/26/28/30(默认)/32/34/36/38 + 自定义 Q
7. 上限不限制 / 1.0 / 1.5 / 2.0 / 2.5(默认) / 3.0 … 6.0 / 自定义 Mbps
8. 音频128k / 96k(默认) / 64k / 48k / 直通 copy
9. 编码档位默认(medium / p5)/ 现场实测 / 手动选择
10. 并发2 路(默认) / 现场实测 / 手动 1~8
11. GOP自适应(默认):相机 / 10bit / 4K → 1 秒,其余 2 秒;或 1/2/4 秒、自定义
12. 质量地板关(默认) / Q34 / Q36 / Q38(压缩 4K 建议 Q36)
13. 杜比视界关(默认,输出 HLG):亮度忠实、体积最优;保留 DV 为实验性功能(亮度偏亮、体积 +40%)
输出容器MP4(默认) / MKV / MOV / 跟随源;MOV 强制 AAC

质量档位的平台差异

三个平台的"质量数字"不是同一把尺子,脚本按编码器分别给默认值,手工改参数时须注意:

平台 / 编码器取值范围默认值说明
Intel QSVQP 1~5130ICQ 恒定质量,数字越大体积越小
NVIDIA HEVCCQ 0~5136实拍类约等于 QSV 值 +6
NVIDIA AV1CQ 0~25540标尺与 HEVC 完全不同,不可混用

版本迭代

版本主要变更
v1.0首个可用版本:双平台自动检测、菜单式参数、批量编码
v3NVENC 侧调优:preset p7→p5、并发 3→1、空间 AQ 关闭
v5QSV 自动标定:preset 实际只有 TU 7/4/1 三档,选定 TU4
v7新增 --concurrency-test;按实测把 Intel 并发定为 2 路
v15每文件独立日志、失败重试、失败清单
v16上限模式改为 ICQ 反解质量值,修正 AV1 用 -q:v 导致体积膨胀数倍的问题
v23默认 preset 改为 medium(QSV)/p5(NVENC),默认 2 路并发
v31默认上限 2.5 Mbps;修正与反解冲突的 VBR 兜底
v37关闭 Q 缓存;Q32 + 2.5 Mbps 作为当时的定稿基线
v39~v46质量档 24~38、上限 1.0~6.0 Mbps、音频 32k~128k、GOP 菜单、质量地板、启动优化
v47~v49杜比视界 RPU 注入与配置盒移植(后改为默认关闭)
v57~v63GOP 改为自适应并实测各源;默认质量调为 Q30;元数据与竖屏旋转修正
v66~v69音频默认 96k;GOP 菜单;修复不设 -g 导致的全局卡顿
v70~v76像素率兜底;高级设置折叠;按平台取编码器
v79~v84faststart 根治(两处重封装曾把 moov 移回尾部);上限失效根治;.MOV + Opus 失败修复;B 帧五档定论
v85新增输出容器菜单;目标已存在则跳过;编码后五项「承诺-行为」自检
v86自检基准改为跟随用户设置,修复手选 GOP/音频后必然误报的问题
v87当前版本:纯清理,删除 169 行死代码,与 v86 生成的 ffmpeg 命令逐字节一致;40 项单测 + 5 组端到端测试通过

下载

UniversalEncoder_v87.py · 255 KB · Python 3.9~3.13

依赖:ffmpeg 需支持 ICQ(9.0 分支或发布版)。脚本启动时会探测构建能力,不支持则提示切换。

仓库含完整提交历史与各版本对照: github.com/SylvanLee205/UniversalEncoder

已知问题与未验证项