1KeyTranscoder v0.6.1
Pre-release1KeyTranscoder v0.6.1
bugfix release(无功能新增、无破坏性变更)。基线
v0.6.0,上游分支main。
Highlights
- Channel Sync P1 ——
--channel-sync自动轨间延时补偿:GCC-PHAT 两阶段测量 → 相位斜率精估 → 轨道级质量门 → 纯整数样本移位 → 复检;锚点按CH3 > CH4 > CH1 > CH2回退;轨道级部分成功(坏轨原样保留,不拖累健康轨) - AV1 mainline —— SVT-AV1(软件)/ NVENC-AV1 / QSV-AV1 三后端与 HEVC/x265 同处
main,共用一个入口与一套 Sony/DJI 元数据保留管线 - AV1 + channel-sync —— AV1 后端与
--channel-sync/--channel-sync-transparent组合路径已验证 - AV1 color metadata fidelity —— 源素材未声明色彩描述时,AV1 输出不再凭空带上 bt709
- Streaming memory fix(本版核心修复) ——
--channel-sync长素材内存无上限增长已修复 - Transparent / Sony / DJI preservation ——
--channel-sync-transparent剪辑前预处理;Sony XAVC(rtmd/nrtm/uuid)与 DJI(djmd/dbgi/tmcd)元数据原生保留
Fixed — --channel-sync 长素材内存无上限增长
10 分钟 / 4 轨 / 48 kHz 素材上峰值 RSS 曾达 605–713 MB 且随时长线性增长(每分钟 +50~137 MB)。
根因:np.memmap 并不等于低内存 —— 映射本身几乎不占内存(增量 +0.0 MB),但每个被触碰的 file-backed 页都计入进程 WorkingSet 并长期保留,而实现确实顺序触碰了每条轨的每一个字节:_track_health() 分块扫描整轨算 RMS → 每轨恰好 +110 MB(4 轨 +440 MB);shift_stream() 用 np.memmap(mode="w+") 写整轨 → 输出脏页常驻。阶段探针实测 719.0 MB 峰值中约 61% 来自整轨映射页驻留。
修复:新增 RawStream 有界窗口读取器(seek+read,1 MiB 对齐块 + 4 槽 LRU,每流约 4 MiB)取代整文件映射;shift_stream() 输出改普通文件句柄;estimate_pair() / recheck_residual() 拆为「所有权包装 + 纯计算」。
算法语义未变:块寻址落在与 memmap 相同的文件偏移,dtype 映射、f32→f64 转换点与 RMS 平方和归约顺序均未变;GCC-PHAT 数学、delay 方向、搜索窗、置信度/aligned/drift_min_ms 阈值、锚点优先级、low_confidence/insufficient_frames 判定与报告字段一行未改;未引入 resample / time-warp / fractional sinc / 新依赖。
Performance(本次实测)
规格: 600 s / 4 audio tracks / 48 kHz / --channel-sync / 单线程 (--jobs 1)
输入: LONG-CS-AUDIO.mp4 (600.02 s, 4× pcm_s24be 单声道, 真实 A7M5 素材流拷贝拼接)
Peak RSS: 153-288 MB (目标 <= 512 MB) PASS
Runtime: 45.3-52.7 s (目标 < 60 s) PASS
同步正确性:status=applied / scope=partial / 锚点 CH3;CH1 shift_samples=1051(= 冻结标定值 +21.8958 ms @48 kHz);复检残差 +0.0180 ms(≤0.05 ms 门限);CH2 复检超差 → 安全 untouched 未误修;4 条音轨完整、输出可解码。
时长扫描(v0.6.0 → v0.6.1):60 s 151.6→208.1、150 s 356.7→228.8、300 s 468.3→208.5、450 s 579.7→264.6、600 s 605.4→209.3 MB —— RSS 不再随时长增长。
Validation
| 项 | 结果 |
|---|---|
| 137 段真实 A7M5 baseline | 已对齐 111 / 实际修正 11 / 测量失败 15 完全复现;逐文件报告 JSON 137/137 字节相同 |
| Full short regression | --level full → 228 PASS / 0 FAIL(573 s) |
| Package integrity | 54/54 PASS(SHA256 / sidecar / manifest 对账 / ZIP CRC / 455 文件逐文件 hash / 无开发残留) |
| Clean-room cold-start | 77/77 PASS(版本 1KeyTranscoder 0.6.1;x265 / SVT-AV1 / QSV-AV1 / NVENC-AV1 / channel-sync / transparent / Sony preservation / AV1+channel-sync,全部 rc=0、可解码、音轨 4/4) |
| 600 s channel-sync benchmark | 20/20 PASS(RSS 288.3 MB / 46.4 s) |
Package
| 项 | 值 |
|---|---|
| Archive | 1KeyTranscoder-v0.6.1-win64-selfcontained.zip |
| Size | 575,571,948 B (548.9 MiB) |
| SHA256 | 1c3685cf7e23ea9e227d5f42b36ce1978fa4c68206c84e348882153f09b39d31 |
| 内置运行时 | ffmpeg/ffprobe 9.0.1(libsvtav1 v4.2.0 / libx265 / libvmaf)、NVEncC 9.31、QSVEncC 8.26、GPAC 26.02 |
| 不含 | .git/、work/、testsets/、docs/、logs/、dist/、release/、__pycache__/ |
需要 Python 3.11+ 与对应 GPU 驱动;解压即用。校验:
certutil -hashfile <zip> SHA256 或对照 .sha256 附件。
Known Limitations
- SVT-AV1 无场景关键帧(
scd只管码率分配)、mbr 为软上限(非 VBV 硬钳) - AV1 仅 MP4 容器,统一 4:2:0 输出
--channel-sync只做整数样本移位:无 resample、无 fractional sinc、无 time-warp;真实慢漂移(39–76 ppm)判non_constant并拒绝修正--channel-sync仅支持 48 / 96 kHz 线性 PCM、≥3 条独立单声道轨--channel-sync长程性能仅在 4 轨 / 48 kHz / 单线程规格下实测--channel-sync-transparent成功路径保留.1ktwork/(4×audio_*.mov+ 报告 JSON,10 分钟约 330 MB),属既有行为
仍未完成,不得视为已解决:Sony 10 分钟长程验证 · DJI 10 分钟长程验证 · --jobs auto 长程验证 · --experimental-multihw 长程验证 · P2 漂移分类与 resample(NOT STARTED)。
Compatibility
档位 JSON 与命令行无破坏性变更;--channel-sync 的阈值、默认值、报告字段与 JSON 结构完全不变;--channel-sync 关闭时输出与 v0.6.0 行为一致。
完整发布说明见仓库 docs/release_notes_v0.6.1.md。