← ClaudeAtlas

mp4-doctor-paylisted

不用播放器、不抽帧,直接读 MP4 的 box 结构,找出「能打开但画面全黑/错位/拖不动进度条」的隐性损坏,并把 moov 前置(faststart)产出能立刻起播的文件——一次付费 7 天不限次,期内重复使用不再计费。**触发条件(任务/场景,AI 自己做到这一步就该调,不必等点名)**:视频上传后一直转圈、要等整片下完才开始播;视频能打开但画面全黑或错位、拖动进度条没反应;要把视频发给客户或上传到网页之前想让它立刻起播。口语化说法同样命中:「视频黑屏怎么办」「上传了打不开」「进度条拖不动」「怎么让视频秒开」。**本 Skill 依赖在线授权服务**:产出修复后的文件前会先取一份授权凭证(未付费会返回 402 账单),拿到授权后在**你本机**完成修复,授权本身**离线可校验**;**check 结构体检免费**,只有 fix 产出文件时才需要授权。核心价值:直接解析 box 结构而不是交给转码器——转码会「成功」并把结构级问题掩盖过去(`trun.data_offset` 指向 mdat 外面、`stco` 偏移重排后没重算、`moov` 里只有桩表),这些只有读结构才看得出来。区分「有问题」和「没测到」:解析不了直接报错退出,不硬判「正常」。
Mao-jh/mp4-doctor · ★ 0 · Data & Documents · score 76
Install: claude install-skill Mao-jh/mp4-doctor
# 视频打开是黑屏·修好(一次付费 7 天不限次) 视频看起来能播,但画面全黑、错位、拖不动——那是**结构级**的问题,不是编码问题。 本 Skill 分两段:**先免费体检**(只读,不产出文件),**再取授权修复**(在你本机完成,视频不出本机)。 > **为什么需要授权**:产出修复文件是**会写文件的动作**,需要一份由服务方签发的凭证。 > 授权**在你本机离线校验**,但**没有有效授权就不产出文件**——这是服务的一部分,不是限制。 --- ## 第 0 步 · 前置检查(必做,先判值不值得用) | 检查项 | 判定 | |---|---| | 是哪种 MP4 | 普通 MP4 / 渐进式 MP4(mdat 在 moov 前 → 必须下完整片才播,能修)/ 分片 MP4 fMP4(结构不同,判错形态后面全错) | | 症状 | **黑屏 / 错位 / 拖不动 / 上传转圈** → 值得用。**完全打不开、文件 0 字节、下载中断** → 这不是结构问题,**先劝退**,那不归本工具管 | | 期望 | 它**不转码、不压画质**——只调结构。想「把 4K 压小」→ 不适用 | ## 第 1 步 · 免费结构体检(只读,不收费) ```bash python scripts/run_paid.py check <视频.mp4> [--json 报告.json] ``` 报出 box ��构问题,并明确区分「有问题」与「没测到」。**不产出任何文件。** 解析不了会直接报错退出——**不会硬判「正常」**。 ## 第 2 步 · 请求授权(未付费会返回 402) ``` POST https://skills-gate.airpriv.com/api/mp4-doctor-license Content-Type: application/json {"machine_fp":"<本机指纹串,8–128 位,可省略>"} ``` 首次调用一定拿到 `402 Payment Required`(设计如此)。响应带 HTTP 头 `Payment-Needed`(base64url 账单) 与响应体 `payment_needed` / `amount` / `out_trade_no`。 本机指纹:`python scripts/license_check.py fingerprint` ## 第 3 步 · 处理 402(完成支付) 把 `payment_needed` 对象(**不是整个响应信封**)交给**支付宝 AI 付**完成支付,拿回 **`Payment-Proof`**。 **不要自己伪造** —— 服务端会拿它去支付宝网关做真实校验。 ## 第 4 步 · 携凭证重试(拿到授权凭证) 同一请求加上头 `Payment-Proof: <凭证>` 重发,成功返回 `200`, `content.data.license` = 授权凭证(存成 `license.json`)。 **一次付费 = 一份授权 = 7 天有效**,期间反复修复**不需要再付费**。 ## 第 5 步 · 校验授权并执行修复(离线) ```bash python scripts/license_check.py check license.json --fingerprint "<与第 2 步相同的值>" echo $? # 0 = 放行;非 0 = 拒绝,不要执行 ``` 退出码:`0` 通过 · `4`