Skip to content

Latest commit

 

History

History
204 lines (179 loc) · 19.3 KB

File metadata and controls

204 lines (179 loc) · 19.3 KB

docs/ — 文档分类索引

我要找什么? → 先看下面这张表。

我想… 去哪里
搞清楚代码到底怎么跑(端到端数据流) design/architecture.md ★ 新维护者从这里开始
看当前该怎么用这个工具 根 ../README.md
看评估汇总与决策记录 [FINAL_REPORT.md](FINAL_REPORT.md)(注意其头部状态横幅)
查某后端为什么这样选、参数怎么定的 evaluation/(先看该目录索引表里的"状态"列)
查某个子系统的设计(硬件后端 / channel-sync / 4:2:2) design/
搞清楚 x265 四个档位为什么这样设计(生产目标 / 计算剪枝 / NVENC 锚点) x265-profile-design.md ★ 档位设计方法论
看硬件解码 integration 的测试矩阵与最终判定 hardware-decode/ ★ 主交付物是 integration-test-matrix.md
找厂商官方文档 / 上游源码 / GPU 能力探测 reference/README.md
查已封存的历史调查(硬件解码 Phase 1 等) ../olddocs/docs/ ★ 先读 ../olddocs/README.md 的状态标注
看测试素材清单与冻结基线 fixtures/a7m5_channel_sync_fixtures.md
看历史代码快照与废弃脚本 根 ../olddocs/README.md

分类规则:design = 项目自身设计/实施文档;evaluation = 本项目的 评估与调研报告;reference = 第三方一手资料存档(按厂商分目); archive = 已封存文档,已迁至根目录 ../olddocs/(唯一归档区)。 配置 JSON(nvenc.json 等)是运行时配置,不属于文档,留在根目录; metadata_forensics/ 是取证数据目录,work/ 是实验产物,均不入档。

⚠️ 2026-09 文档审计补注:本索引与若干评估文档此前存在事实性错误与 过期结论(目录文件数、默认后端、AV1 路由策略等)。已逐项更正,并在 受影响文档头部加了状态横幅,指明"哪几条被推翻、现行依据是哪一份"。 原文一律保留,未做删改——历史结论被推翻是研究过程的正常部分。

项目文件夹结构(整体架构)

F:\1KeyTranscoder\
├── 1kt.py                  主入口(CLI + 编排;硬件批量逻辑在 core/batch_hw.py)
├── watchfolder.py          轮询批处理入口(转调 1kt.py)
├── start.bat               双击启动
├── VERSION                 版本号唯一来源(0.8.0)
├── LICENSE                 GNU LGPL v3 正文(本项目许可;GitHub 由它识别)
├── NOTICE                  项目版权 + SPDX: LGPL-3.0-or-later + 文本索引
├── licenses/GPL-3.0.txt    GNU GPL v3 全文(LGPL-3.0 并入引用;不放在
│                             LICENSE/COPYING 名下以免干扰许可识别)
│
├── core/                   ★ 运行时核心(37 个 .py):config / probe / postprobe /
│                             paths / scaling / source_classifier / batch_hw /
│                             channel_sync / sync_estimate / mp4_channel_sync /
│                             sync_fix / audio_models / audio_plan / audio_probe /
│                             audio_timeline / audio_pcm / audio_route /
│                             audio_wav / audio_process / audio_mix /
│                             audio_execution / audio_retention / audio_encode /
│                             audio_request / output_compose / audio_format /
│                             audio_external / audio_output_structure /
│                             logging_utils / dashboard / dashboard_ui /
│                             models / versions / version / color
├── encoders/               ★ 编码后端(10 个 .py):nvencc / qsvencc / x265 /
│                             svtav1 / hwdecode(硬件解码策略) / integrity(完整性闸门) /
│                             caps / hw(plan_initial_format) / base
├── preservation/           ★ 元数据保留(16 个 .py):pipeline / sony / dji / gpac /
│                             isobmf / validate / checker / selfcheck / quality /
│                             colour / gyroflow / backends / audio_sync / models /
│                             poc_video
├── production/             ★ 跨域编排(2 个 .py):output —— 音频产物 + 视频产物
│                             → 最终容器;既不属于音频域也不属于视频域
├── tests/                  自动化测试(full_autotest / run_selfcheck / sony_selfcheck)
│                             + selftest/(runner / fixtures / assertions / suites /
│                             reporting,v0.7.1 起的分层测试实现)
│                             + hwdecode/(v0.7.0 硬件解码集成测试矩阵与 harness)
│                             + fixtures/channel_sync(137 段冻结基线 CSV)
├── release/                发布工具:build_release.py / verify_package.py
│
├── *.json                  档位配置(nvenc / nvenc_av1 / qsv / qsv_aligned /
│                             qsv_av1 / x265 + scaling / svtav1 + scaling /
│                             vce[预留未接])—— 运行时配置,非文档
│
├── docs/                   📚 文档(见下)
├── tools/                  ⚠️ 自带工具链 —— gitignored,**只有这一份**
│   │                         (详见根 README §依赖 的警告框)
│   ├── ffmpeg.exe / ffprobe.exe      9.0.1 gyan full
│   ├── NVEncC_9.31_x64/              shipped 版(r4047,CUDA 11.8)
│   ├── QSVEncC_8.26_x64/             shipped 版(r4504)
│   ├── GPAC/                         MP4Box 等容器工具
│   └── avhw/                         ★ 硬解研究用的**补丁版**二进制(非 shipped)
│       ├── NVEncC_9.31_avhw/         `9.31 (r1)` CUDA 13.1
│       │                             sha256 dcf6d7a63143c777…7c8be4b
│       └── QSVEncC_8.26_avhw/        `8.26 (r4504)` 自建
├── testsets/               测试素材(1063 文件 / 97.5 GB)—— gitignored
├── work/                   实验产物与阶段证据(gitignored)
├── dist/                   发布产物:v0.6.1 zip + sha256 + manifest(0.54 GB)
├── olddocs/                历史代码快照与废弃脚本(详见 olddocs/README.md)
├── metadata_forensics/     取证数据(18 文件 / 2.7 MB,被 design 文档引用)
└── logs/                   运行时日志输出(gitignored)

各目录文件数按 git 跟踪的 .py 文件计(2026-09 实测)。此前版本标注的 54/24/46 与实际不符,已更正。端到端管线与实际模块职责见 design/architecture.md。

是否进入正式发布包(release/build_release.py allowlist)

目录 / 文件 入包 说明
1kt.py watchfolder.py start.bat README.md LICENSE NOTICE licenses/GPL-3.0.txt VERSION ✅ 必需条目(缺失即拒绝构建)
core/ encoders/ preservation/ tests/ ✅ 全部 .py(排除 __pycache__/.pyc)
*.json(档位配置) ✅ TOP_GLOBS = ("*.json",)
tools/(ffmpeg / NVEncC / QSVEncC / GPAC) ✅ 白名单制:TOOL_FILES = tools/ffmpeg.exe, tools/ffprobe.exe;TOOL_DIRS = tools/NVEncC_9.31_x64, tools/QSVEncC_8.26_x64, tools/GPAC。不在白名单的目录一律不入包——tools/avhw/(补丁版研究二进制)因此自动排除
docs/ olddocs/ logs/ work/ testsets/ dist/ release/ metadata_forensics/ ❌ 明确排除,见 manifest excluded_by_design

即:文档、实验产物、测试素材、发布工具本身都不进包, 包内只含运行时必需内容 + 自带工具链。改动的具体清单见 dist/release-manifest.json 的 files(455 条记录)。

📁 design/ — 设计文档(分类:项目设计)

文件 说明
architecture.md ★ 端到端架构总览(当前版本):两个入口与分支、后端解析四级优先级、三级降级梯、三条源管线、保留管线的幂等/续跑、channel-sync、--check 三级、必须保持的不变量、逐文件地图。新维护者从这里开始读。
hardware_backend_design.md 硬件后端(NVEncC/QSVEncC)设计定稿,含踩坑结论(5.x 节)。§4.5/§9/§10.2/附录 B 部分已被后续代码推翻(默认后端、已删除的 --auto-downgrade、控制台询问),以 architecture.md 为准;§5/§6/§7 实测矩阵仍有效
implementation_report.md 实施报告:降级链与回退路径的故障演练记录(§15 DJI 专线)。§1/§4/§11 的模块名与开关已过时;§12–§15 与现行代码一致
hevc_422_rext_compatibility.md HEVC 4:2:2 Rext 输出形态、播放兼容矩阵与归档建议
x265-profile-design.md ★ x265 档位设计方法论(设计文档,按约定存放于 docs/ 根):为何单个 profile 不够、speed/quality/size 三维约束、UHQ 质量上限与参考基线、HQ 的选择性计算剪枝、FAST 的单位时间压缩效率、SMALL 的存储效率、FAST ⇄ SMALL 相互校准、NVENC UHQ 作为外部现实锚点、真实 Sony 4K60 10-bit 4:2:0 LongGOP corpus 驱动、边际收益决策逻辑、四个档位的 lineage。附录 A 逐键抄录 x265.json / x265_scaling.json 当前值
channel_sync_p1.md --channel-sync P1 设计文档(algo 2.3.0-p1):算法、阈值、轨道级降级、fixture 标定、测试矩阵。与 core/channel_sync.py::DEFAULTS 逐键一致
INTEGRATION_REPORT.md 已移入归档:见 ../olddocs/docs/INTEGRATION_REPORT.md(⚠️ 部分过期:§A 模块清单已被 architecture.md 取代,§D 时序结论仍有效)

📄 发布说明(分类:项目自身文档)

文件 说明
release_notes_next.md 下一开发周期(尚未发布,未分配版本号):硬件 Video Encode Backend(NVENC / QSV)接入 --audio-plan —— 视频侧 VideoHandoff 单向接手契约、软硬件共用一个音频实现、视频基本流 sha256 与默认路径逐字节一致、--hw-decode 仍走硬件、Sony/DJI 逐文件明确拒绝、实测已知限制(nvenc-av1 编码器无法创建)。另含本次新增的用户文档
audio_plan.md --audio-plan 用户指南(面向使用者):一分钟上手、默认行为、各后端支持表、计划文件结构、选择/排除/排序、编码继承与"什么时候不会重编码"、alignment(含压缩音频规则)、mapping(source / independent / grouped)、外挂音频命名与排序规则、硬件后端用法、可直接复制的常见组合、限制与排错。文档里每个 JSON 示例都由回归保证能被真实 schema 解析
release_notes_v0.7.1.md v0.7.1 发布说明(音频模型 Phase 1 + Phase 2 + Phase 3A/3B):AudioStream/AudioChannel/AudioTrack/AudioPlan 数据模型、AudioSource/Selection/Channel Mapping/AudioMapSpec、AudioTimeline(时长·EOF·offset 唯一权威)/ AudioPCMReader(canonical float32)/ AudioRouter / WavExporter / AudioMixer(N→1 + gain + peak/clipping)/ AudioOutputSpec、与 channel-sync 的只读连接、序列化 schema、新增测试矩阵、默认音频路径 unchanged 的证据与"未实现"清单。⚠️ 已随 tag v0.7.1 冻结,不再改写
release_notes_v0.8.0.md v0.8.0 发布说明(当前版本):任意 reference 的音频延迟矫正、Phase 4A 选择性 MP4 音频保留、Phase 4B 音频编码 + 输出编排、Phase 4C 接入生产入口、Phase 5 格式感知 alignment + 编码继承 + 外挂音频发现与 mapping。含实测证据(compressed 显式 alignment 的真实 offset 与互相关残差、4/6/8CH × mapping 矩阵、视频基本流 sha256 不变)、新增 reason code 契约与"未实现"清单。✅ 已随 tag v0.8.0 冻结(发布前名为 release_notes_next.md)
../docs/hardware-decode/ v0.7.0 hardware-decode integration 交付物(本轮已并入 main,v0.7.0 ∈ ancestors(main)):README.md 入口、integration-test-matrix.md 测试矩阵、final-report.md 最终判定、patches/ 与 toolchain-provenance.json
release_notes_v0.6.1.md v0.6.1 发布说明:Channel Sync P1 / AV1 mainline / AV1 色彩保真 / 流式内存修复;含验证矩阵、实测性能与已知限制

阶段验证报告的正式副本已归档在 work/docs/ 与 work/releases/ (work/ 按项目约定不入文档目录、不入发布包): work/docs/channel_sync/stage12_memory_validation.md(Stage 1.2 内存修复验证, 含 600 s 长程表)、work/docs/channel_sync/memory_audit.md(逐阶段内存归因)、 work/releases/v0.6.1_release_validation.md(正式发布验证记录)。

📁 归档区 → 已迁至 olddocs/docs/

本目录不再设 archive/ 子目录。 项目唯一归档位置是根目录 ../olddocs/:olddocs/docs/ 放已归档文档, olddocs/backup/ 放历史代码快照。这样避免"两处归档区"再次出现。

归档区不是垃圾场:里面的结论仍然有效、可以引用,只是不再随代码演进更新。

归档内容 位置 状态提示
★ 硬件解码最终交叉结论 ../olddocs/docs/hardware-decode/research-conclusion.md 进入 hardware-decode integration 前先读这一份
端到端基准(S9) ../olddocs/docs/hardware-decode/e2e-benchmark.md §0.1 已观测/推断未证/未测三者分离;§8.1 集成行动指南
NVEncC 补丁溯源 ../olddocs/docs/hardware-decode/nvencc-patch.md 集成候选;含 clean-apply 证明与集成前置条件
QSVEncC 补丁溯源 ../olddocs/docs/hardware-decode/qsvencc-patch.md ⚠️ 仅对 pinned 8.26 生效,非通用声明
P0-A 硬件解码调研(Phase 1) ../olddocs/docs/hardware-decode/ ⚠️ 个别文档部分过期:README.md/root-cause.md 中"丢帧在 rigaya reader layer / 确切源码行 Unconfirmed"已被 Phase 2 修正;"永不用 rigaya --avhw"建议已被推翻
已取代的 AV1 三份评估 + 集成报告 ../olddocs/docs/ ❌/⚠️ 见 ../olddocs/README.md §3.2
逐份状态索引 ../olddocs/docs/_ARCHIVE-INDEX.md —

读归档文档前先读状态标注,否则会读到已被推翻的结论。 2026-09-12:四条 research 分支已全部并入 main,Phase 2 文档随迁入本归档区。

📁 evaluation/ — 评估报告(分类:评估与调研)

文件 说明 状态
av1_calibration.md ★AV1 档位标定报告(2026-08-31 实测定案):SVT-AV1 四档 + 硬件 QVBR/ICQ 重标定,VMAF/XPSNR 矩阵与定案依据。数值与档位 JSON 逐键一致 ✅ 权威(数值)
av1_implementation_assessment.md AV1 三后端(svtav1/nvenc-av1/qsv-av1)实现评估:Sony/DJI 保留管线(不打 XAVC tag)+ 端到端实测 + 标定状态 ✅ 权威(路由/管线)
hevc_implementation_assessment.md HEVC 实现生产就绪度评估(重写版):全量代码重读 + 官方文档/社区实测调研 + 本机复测,判定"有条件生产就绪"与上线条件 ⚠️ 部分过期(§9 AV1 衔接段已被推翻)
x265_production_assessment.md x265 实现生产就绪评估(重写版):官方文档逐参数核查 + 本机实证 + 生产判定与条件清单 ⚠️ 部分过期(P0 有 2 项已完成未回填)

已移入归档的评估文档(2026-09-12):av1_feasibility_report.md(❌ 已过期)、 svt_av1_archival_assessment.md、av1_hw_tuning_guide.md(各 ⚠️ 部分过期)。 位置 ../olddocs/docs/,状态说明见 ../olddocs/README.md §3.2。其原文头部仍保留状态横幅。

📁 fixtures/ — 测试素材清单(分类:项目自身文档)

文件 说明
a7m5_channel_sync_fixtures.md A7M5 真实素材 channel-sync fixture 清单:10 类场景(空 CH1/CH2、不同物理位置、已对齐、不同固定 delay、低相关等);原始大文件不提交仓库,仅路径引用;冻结基线与标定依据见 §15 与 tests/fixtures/channel_sync/

📁 reference/ — 参考资料(分类:第三方一手资料存档)

厂商官方文档、上游源码片段、GPU 能力探测报告、社区实测抓取等外部一手资料, 按厂商分目。目的是让项目文档里的引用可追溯。

目录 文件数 内容
reference/svt-av1/ 109 SVT-AV1 官方文档 + PSY fork + 社区归档实践 + 速度/质量基准
reference/x265/ 78 x265 官方 CLI/preset/releasenotes + 社区调研抓取
reference/qsv/ 18 QSVEncC 官方选项 + 逐 GPU 能力探测 + 关键 issue 全文
reference/nvenc/ 12 NVEncC 官方选项 + 各代 GPU 能力探测 + NVIDIA/媒体实测
reference/vce/ 7 VCEEncC 官方选项/Readme + AMF 编码 API + RDNA3 探测
reference/misc/ 2 零散网络调研存档

★ 逐份清单、命名与权威性约定(同一文档有多份副本时该信哪一份)见 reference/README.md。

本索引不再重复 reference/ 的细节——此前两处各维护一份清单,已合并到一处, 避免再次出现"两处不一致"。

2026-09 梳理时清理了 4 个内容完全相同的精确重复文件(official/Parameters.md、 official/Appendix-Film-Grain-Synthesis.md、src/CHANGELOG.md、 src/CommonQuestions.md),权威副本保留在 svt-av1/ 根下。 带 # Source: <URL> 首行的抓取件未动——那是出处证据,不是冗余。