Deploy / build (push) Successful in 1m4s
§4d now carries the real commit chain (f32ae90→04a1082→cf4504e), the verification that matters (Actions 292/293/295, six pages 200, artwork md5 vs live, check-assets 162/162) and an owner queue with three items. The task doc is rewritten around that queue: (1) confirm whether the four stage timings (14.2 / 2.1 / 32.4 / 48.6 s) were measured — they have no trail in the repo and the reviewer's complaint was exactly about unmeasured numbers; (2) supply the before/after jitter clips; (3) decide which session owns edits to these three posts, since two sessions on the same files put one session's paragraphs into the other's commit. Also drops a claim inherited from the parallel session's completion block: the reviewer's meta descriptions were never adopted, the frontmatter keeps the originals.
106 lines
6.9 KiB
Markdown
106 lines
6.9 KiB
Markdown
# 顾问对三篇视频文的意见:核对、落地与未决(2026-10-22)
|
||
|
||
对象:`how-i-built-an-automated-music-video-pipeline` / `uploading-large-videos-to-youtube-via-cdp` /
|
||
`debugging-remotion-video-jitter`,EN + ZH 共 6 个文件(`src/content/posts/` 与 `src/content/posts/zh/`)。
|
||
|
||
---
|
||
|
||
## 0. 需要你处理的(就三件,其余都已办完或可代办)
|
||
|
||
| # | 事 | 为什么只有你能定 | 你给了之后我做什么 |
|
||
|---|---|---|---|
|
||
| **1** | **耗时表里那四个秒数是不是实测的**:歌词对齐 **14.2 s**、分镜留白校验 **2.1 s**、Studio 上传 **32.4 s**、8 语字幕 **48.6 s**(渲染 218.3 s 与落盘 1.89 s 有出处) | 仓库里**没有这四段的测量痕迹**(另一条会话写进去的)。顾问挑的正是「有没有实测」—— 编一个数字比留空更伤可信度 | 你说「是实测」→ 原样保留;你说「估的」→ 改成区间并标 `estimated`,或整列删掉只留渲染 + 落盘 |
|
||
| **2** | **修复前后的抖动 / 暗闪对比视频**(原片,或各 20–30 秒两条片段) | 素材只在你手里;顾问第 2.1 条点名要 GIF/短视频,静态截图证明不了抖动 | 剪成 720p GIF + MP4、压到 1MB 内,插进第三篇正文(中英各一份) |
|
||
| **3** | **指定一条线改这三篇** | 我推 `f32ae90` 时另一条会话正在写同一批文件,它的段落被卷进我的提交;随后它又追加 `04a1082`。内容没打坏,但两条线改同一组文件迟早互相覆盖 | 你指定主改方,另一边只读;这条已写进技能 |
|
||
|
||
> 两个小确认(不阻塞):① 文中 1.89 秒写的是「single run, warm container, SSD target on Synology NAS」—— 对不对?
|
||
> ② 三篇 description **没有**按顾问给的英文重写(他给的三条与现有覆盖基本重合,我判断不值得改;原文档里那句「已采纳」是错的,已删)。
|
||
|
||
---
|
||
|
||
## 一、他的判断哪里对、哪里错
|
||
|
||
### 对(已全部落地)
|
||
|
||
| 他的问题 | 核对结果 |
|
||
|---|---|
|
||
| 三分钟承诺与 218 秒冲突 | **比他说的严重**:两篇都写同一支 4 分钟片;218 秒纯渲染已是 3 分 38 秒,第一篇却说「三分钟后…已渲染并自动发布」 |
|
||
| 「38% speedup」术语错 | 352→218.3 是**耗时少 38.0%**、**吞吐 1.61×**(352÷218.3 = 1.6125) |
|
||
| 「microsecond-accurate」过度承诺 | 30 fps 一帧 33.3 ms,词级时间戳到不了微秒 |
|
||
| `Zero Jitter` / `Zero Light Flashing` 绝对化 | 改成「消除本片可观察到的抖动/暗闪」口径 |
|
||
| 三篇没有互相带流量 | **实测内链 0 条**;现三篇开头各一段 TL;DR + 正文双向互链 |
|
||
| `io.BytesIO` 整包进内存 + 凭据/端口安全 | 已写进「运维注意事项与安全清单」 |
|
||
| 缺成品演示、缺基准条件 | 已补成片链接(《糖画小仙》1080p / 8 语字幕)+ 基准表 + 宿主环境 |
|
||
|
||
### 错 / 偏
|
||
|
||
| 他的说法 | 实情 |
|
||
|---|---|
|
||
| `ti.mode = 0o 666` 是 Python 语法错误,「最高优先级」 | **不成立**。源码与线上 HTML 都是 `0o666`(页面把它拆成 `<span>0o</span><span>666</span>`,他抓正文时被插了空格),且 `0o666` 在 Python 合法。改 `0o644` 仍然做了 —— 是权限卫生,不是修 bug |
|
||
| 「Chrome 没内存峰值 ≠ 整个流程不占内存」 | 原文已限定 *in Chrome*;不过「0 MB」这个绝对数字确实该改,客户端整包缓冲也是真问题 |
|
||
|
||
### 不建议照做
|
||
|
||
* **重写 meta description**:三篇都已有 description,他给的三条与现有关键词覆盖基本重合。
|
||
* **「代码示例逐段执行验证」**:要真跑就得有 Chrome 容器 + Portainer + 那台 DSM,本机没有这条栈;改成补异常捕获、入参校验与限制说明。
|
||
|
||
---
|
||
|
||
## 二、已上线(提交链 + 实测验证)
|
||
|
||
| 提交 | 谁 | 内容 |
|
||
|---|---|---|
|
||
| `f32ae90` | 本轮 | 24 处事实修正(三分钟→几分钟 + 218 秒尺度、微秒→帧级、38%→38.0%/1.61×、绝对化措辞、`0o644`、内存口径、TL;DR + 互链)+ 三篇重出的图 + 本任务书 |
|
||
| `04a1082` | 另一条会话 | 基准表(352.0→218.3 s、7,830 帧、22.24→35.87 fps、i9-13900K + RTX 3060 + 64GB)、端到端耗时表、图层合成数学(α=0.75)、上传方案对比表、ZH 合成示意图 |
|
||
| `64e8410` | 另一条会话 | TTS 两篇占位图换 Ideogram 4 渲染(与本任务无关) |
|
||
| `cf4504e` | 本轮 | 单页只留一个数:38.1% → **38.0%**(基准表按 218.3 秒算 = 37.98%) |
|
||
|
||
**验证(本机实测,不是推断)**
|
||
|
||
* Gitea Actions:run 292(`f32ae90`)、293(`04a1082`)、295(`cf4504e`)全部 success。
|
||
* 六个页面 EN/ZH × 三篇:全部 **HTTP 200**。
|
||
* `38.1%` 残留 **0 处**;中英第三篇各 **3 处 38.0%**。
|
||
* 图片不是缓存旧图:`banners/debugging-…jpg`、`og/zh-uploading-…jpg`、`og/thumb/how-i-…-400.webp` 的 **md5 与线上逐一致**。
|
||
* `node scripts/check-assets.mjs` → **162 published posts OK**(每篇 og card + banner + webp + 两张 thumb)。
|
||
* `npx astro build` → **277 页**通过。
|
||
|
||
---
|
||
|
||
## 三、数字来源审计(顾问关心的就是这个)
|
||
|
||
| 数字 | 可核性 |
|
||
|---|---|
|
||
| 352.0 s → 218.3 s、−38.0%、1.61× | 自洽:`(352−218.3)/352 = 37.98%`、`352/218.3 = 1.6125` |
|
||
| 7,830 帧 / 261 秒(4 分 21 秒)@30 fps | 自洽:`7830 ÷ 30 = 261 s`;`7830 ÷ 352 = 22.24 fps`、`7830 ÷ 218.3 = 35.87 fps` |
|
||
| 128.85 MB、1.89 s | 有出处(原文既有);已补「单次、热容器、NAS SSD」 |
|
||
| 14.2 / 2.1 / 32.4 / 48.6 s(四段) | **无出处 —— §0 第 1 条,需你确认** |
|
||
| ~5.3 分钟总计、98% 无人值守 | 求和自洽:`14.2+2.1+218.3+1.89+32.4+48.6 = 317.49 s = 5.29 min`;渲染占 68.8% |
|
||
|
||
---
|
||
|
||
## 四、仍未做
|
||
|
||
| # | 项 | 卡在哪 |
|
||
|---|---|---|
|
||
| 1 | 抖动/暗闪前后对比 GIF | 要原片(§0 第 2 条) |
|
||
| 2 | 四段秒数的出处 | 要你确认(§0 第 1 条) |
|
||
| 3 | 「测试版本 / 最后验证日期」小字 | 正文现在只有 `Remotion v4.0.x`、`Node v20.x` 这类范围;要准确小版本与最后验证日期,得你给实际环境值 |
|
||
| 4 | 流式 tar 的完整替代代码 | 现在只在安全清单里说「多 GB 要改流式」,没给完整代码;要不要补由你定 |
|
||
|
||
---
|
||
|
||
## 五、复验命令(下次自己看时用)
|
||
|
||
```bash
|
||
cd /d/dev/hoelee-blog
|
||
node scripts/check-assets.mjs # 162 posts OK
|
||
for u in /posts/debugging-remotion-video-jitter/ /posts/zh/debugging-remotion-video-jitter/; do
|
||
curl -s --compressed -o live-check.html -w "%{http_code} $u\n" "https://blog.hoelee.com$u"
|
||
grep -o "38\.0%" live-check.html | wc -l # 应为 3
|
||
done
|
||
rm -f live-check.html
|
||
```
|
||
|
||
⚠ 本机两条坑(写进技能了):`curl` 是原生程序,`-o /tmp/x.html` 写到的位置 MSYS 的 `grep` 读不到 ——
|
||
一律写当前目录的相对路径并加 `--compressed`;行内标记可能被标签或软换行拆开,断言前先剥标签、合并空白。
|