首页 / 全部技能 / 内容创作 / audio-sync-assembly
内容创作 · saranambiar/hyperframes-video-agent-skills

audio-sync-assembly

Build and revise FFmpeg-based video assemblies from scene renders and narration, including audio probing, scene retiming, pauses, trim/concat, setpts, atempo, phrase-to-visual cue alignment, and final timeline manifests. Use when narration length, visual beats, product moments, or scene boundaries must sync precisely.

风险提醒:蓝色 · 知晓即可AI 侦查报告
作者 saranambiarGitHub saranambiar/hyperframes-video-agent-skills ↗Stars 48许可 Apache-2.0(仓库根 LICENSE 为 Apache License Version 2.0;GitHub API license.spdx_id = Apache-2.0)commit f6b043d9fd
agent 宿主通常会约束 skill 执行权限;风险提醒为 AI 侦查观点,不构成质量或安全保证。第三方 skill 仅作拆解与展示,安装使用风险自负,版权归原作者。

1实现原理 · 为什么它能做到

时序真源被钉死为「最新批准的旁白音频 + 场景渲染」,并显式禁止从旧成片反推时序——这是全流程所有重定时、字幕、音乐决策的共同基准。

skills/audio-sync-assembly/SKILL.md
- Use the latest approved narration audio as timing source.
注:这里在做什么:把「以谁为准」写成第一条 Source Of Truth。族内失败模式清单里有对应的一条 "Do not infer timings from old final MP4s if source renders and audio clips exist.",防止每改一版就从上一版成片继续推导而使误差累积。

强调「干预最小化」:按场景形态分档给策略(整段 setpts / 分段重定时 / 插静音加保持帧 / 小幅度 atempo / 只重定时产品时刻之前那段),而不是默认全局变速。

skills/audio-sync-assembly/SKILL.md
Choose the smallest timing intervention:
注:这里在做什么:这是本 skill 最核心的生产判据——先问「最小的时间干预是什么」,并把「整条视频重定时」列为最常见的错误(见 Common Mistakes 首条)。

任何决策之前先探测:每个片段都要量时长、帧率、分辨率、是否含音轨、采样率与声道,命令走 ffprobe 或仓库自带探测脚本。

skills/audio-sync-assembly/SKILL.md
- Duration. - Frame rate. - Resolution. - Audio stream presence.
注:这里在做什么:把「先量再算」固化成流程第一步,避免靠估计做 setpts 比例;同段给出 ffprobe 与「this repo's media probe script」两条路径。

组装顺序把字幕钉在「无音乐旁白母版」上:先拼出 narration-only master,再从它生成字幕、压字幕、建音乐床、混音,最后出成片与预览片。

skills/audio-sync-assembly/SKILL.md
3. Generate captions from narration-only master.
注:这里在做什么:用顺序消掉「字幕对着带音乐的成片做」这一整类时序漂移,也是与 captions-and-music-bed 的分工线(后者第一行即以「旁白时间线稳定」为前提)。

分段切点按语义事件切,明确禁止等分切:场景转场、产品时刻、问题揭示、图表节点、标题揭示、结尾保持、旁白停顿。

skills/audio-sync-assembly/SKILL.md
Avoid splitting on arbitrary equal chunks.
注:这里在做什么:把「按秒数均分」这种看似公平、实则必然错位的做法列为反例——切点必须绑定叙事事件。

预览片不是全片重渲:只对本次改动的敏感处出片段(更新旁白处、产品演示转场、问题时序、字幕样式段、最后 10 秒、任何被改动的场景边界)。

skills/audio-sync-assembly/SKILL.md
Generate preview clips for:
注:这里在做什么:把验证成本压到与改动规模相称,与仓库 AGENTS.md 的「只在受影响处出证明」一致。

2核心能力

01整段/分段重定时、保持帧停顿、音频 tempo 微调与显式拼装的 FFmpeg 命令模板
02音频替换决策规则:探旧新时长 → 保下游同步则小幅 tempo → 措辞时序实质变化则重建分段图并重生成字幕
03短语级视觉对齐:把台词起音映射到全局时间戳(问题卡、产品状态、图表点、场景标题揭示、CTA/logo 到达)
04时间线清单字段规范:场景 ID、源渲染路径与时长、目标时长、音频路径与裁剪起止、插入静音、保持帧、分段重定比、全局场景起点、证明时间戳
05停顿处理判据:插静音 + 保持或轻微动效、不擅自抬高音乐、把停顿时长计入下游场景起点
06回归防护清单:只改一场却重定时全片、替换音频顶掉下游、忘更字幕时序、非关键帧起点的流拷贝、音乐早于片子结束

3外部依赖

类型依赖
cliffmpeg(setpts / trim / tpad / atempo / apad / atrim / concat / fps / scale / setsar),走 filter_complex 显式拼装
cliffprobe(探测时长/帧率/分辨率/音轨/采样率与声道)
package仓库根确定性脚本 scripts/probe_media.py 与 scripts/timeline_manifest_to_ffmpeg.py(本 skill 以「this repo's media probe script」泛指,非自身目录自带)
package模板 templates/timeline-manifest.example.json(记录目标时序的 JSON 结构)
package输入素材:最新批准的旁白音频与场景渲染(用户/项目本地提供,非外部服务)

4风险提醒 风险提醒:蓝色 · 知晓即可

风险提醒:蓝色 · 知晓即可
  • 时间线清单的字段规范与仓库模板不同构 — SKILL.md 的扁平 11 项字段 vs templates/timeline-manifest.example.json 的嵌套结构(strategy/maps/proofs)。若严格按 SKILL.md 字段名手写清单,scripts/timeline_manifest_to_ffmpeg.py 读不到 maps/hold_source_time,重定时与保持帧会退化成默认整段 setpts。使用时应以模板结构为准。
  • 非关键帧起点的流拷贝风险已被点名,但无自动检测 — Common Mistakes 写了 Copying stream segments with non-keyframe starts and causing preview oddities.,但 skill 目录内没有可执行检查,实际仍需人工看 preview。
  • atempo 是「同步优先」的折中,用户未必接受 — 规则是 use small audio-only `atempo` only if preserving downstream sync matters more than raw duration——判据依赖「用户更在意下游同步」这一假设,skill 未定义何时必须先问用户。
  • FFmpeg 版本/滤镜可用性未声明前提 — 模板使用 setpts/trim/tpad/atempo/concat/apad/atrim;主流发行版 ffmpeg 均支持,但文档未写最低版本或平台前提(仓库 README 示例却是 PowerShell 风格),跨平台用户需自行试跑。
  • 替换音频后的字幕重生成是「应当」而非强制门禁 — Regenerate captions from the new narration master. 写在规则段而非 QA 门禁段;若跳过,成片仍会通过 probe 检查(时长/音轨正常),字幕错位不会被脚本发现。
风险提醒:蓝色,知晓即可。本 skill 目录只有 SKILL.md 与一份 references/ffmpeg-retiming.md(纯指令,无可执行文件);实际接触面是本地 CLI(ffmpeg/ffprobe)与本地文件读写(渲染、清单、字幕、预览片段、证明帧),符合范式蓝档「仅调用本地工具/CLI,或仅本地读写」。**没有把素材送外部服务**:全量扫描本 skill 目录内无 http(s):// 端点、无 fetch/requests、无 token/env 读取、无上传或生成服务调用;音频与画面全部在本地 ffmpeg 管线内处理。仓库根 scripts/ 的 Python 脚本也只做本地 ffprobe/ffmpeg 调用与文件读写(见 second_pass 回查)。九件同族 skill 判级口径一致:目录内只有 SKILL.md(+ 可选 references/*.md),行为面是本地读写与本地 CLI,无端点、无凭证、无素材外发。

5第二遍独立确认

  • [ok] 「外部依赖只有本地 CLI」是否成立(决定蓝档还是黄/橙档) — 本目录正则扫描无 http(s)://、无 fetch/requests、无 token/env/cookie;SKILL.md 只出现 ffprobe 与 this repo's media probe script,references 只出现 ffmpeg filter 片段。不存在素材外发或端点查询,故落蓝档。
  • [ok] ffmpeg 命令模板是否真能跑(不是示意伪代码) — references/ffmpeg-retiming.md 给的是标准 filtergraph 语法(setpts=factor*(PTS-STARTPTS)、tpad=stop_mode=clone:stop_duration、atempo、concat=n=...),可原样接进 -filter_complex;缩放/fps/format 同段给出,属可执行模板。
  • [discrepancy] SKILL.md 的时间线清单字段与 templates/timeline-manifest.example.json 是否一一对应 — SKILL.md 列了扁平 11 项(Scene ID / Source render path / Source duration / Target duration / Audio path / Audio trim start-end / Inserted silence / Hold frames / Segment retime ratios / Global scene start / Proof timestamps),模板 JSON 却是嵌套结构:project{name,width,height,fps,output} + segments[{id,video,source_duration,target_duration,audio,strategy,maps}] + captions{} + music{} + proofs[]。差异在于「插入静音/保持帧/分段重定比」被折叠进 strategy+maps(maps 里用 hold_source_time 表达保持帧),「全局场景起点」由脚本按目标时长累加算出而非显式字段,「证明时间戳」在 proofs[] 而非 segment 内。按 SKILL.md 的字段名手写 JSON 不会与模板同构,照抄者需以模板为准。
  • [discrepancy] 「this repo's media probe script once available」是否说明探测脚本当前不存在 — 措辞(once available)把探测脚本当成「将来可能有」,但 pin 内仓库根已存在 scripts/probe_media.py(ffprobe -print_format json 的封装,输出时长/体积/码率/视频编码与分辨率/帧率/像素格式/音频编码/采样率/声道),且 render-qa-and-surgical-changes 明确点名它。属文档措辞落后于仓库状态,不影响行为,但会让读者低估可用工具。
  • [ok] 与 captions-and-music-bed 的职责是否重叠冲突 — 本 skill 只把「生成字幕/建音乐床」写进组装顺序的第 3-6 步(顺序约束),字幕规则与 ducking 判据全部留给 captions-and-music-bed,无重复定义。

6结论

  • 把时序真源与「最小干预」写成可检查的规则,直接消掉这类工作最常见的两类返工(从旧成片反推、为一场改动重定时全片)
  • 组装顺序本身就是判据:字幕必须生成自 narration-only 母版,音乐床必须晚于字幕——用顺序消除时序漂移
  • 命令模板可执行且带解释(比例定义、保持帧的 tpad 写法、atempo 的适用条件)
  • 交接格式固定(场景起点图 / 音频 / tempo 变化 / 插入停顿 / 预览路径 / 最终时长),续做者无需考古
  • 纯本地管线、零网络零凭证,是这一族里最容易审计的一件
  • 适合:适合:已有一段或多段渲染好的场景 + 一条(或多条)批准过的旁白,需要拼成一条时序精确的成片;旁白长度与画面节奏不一致、需要插停顿或保持帧、需要把视觉节拍对齐到具体台词、或旁白被替换后要重排下游时序的场合。也适合作为装配层被 end-to-end-video-playbook 在 build-in-layers 的第 3-6 步调用。
    不适合:不适合:① 需要设计或生成场景画面(走 hyperframes-scene-builder / motion-design-systems);② 字幕措辞与样式、音乐选曲与 ducking 判据(走 captions-and-music-bed);③ 已批准成片的极小改动验收(走 render-qa-and-surgical-changes,避免用装配脚本重排全片);④ 环境无 ffmpeg/ffprobe 时——本 skill 的全部判据都建立在本地 ffmpeg 管线之上,无纯代码替代路径。
    安装 agent 直装可复制
    ① 本站镜像 更新 2026-09-28
    方式 A · 人下载镜像包下载 audio-sync-assembly.tar.gz
    sha256: 099bc62047c52f2e…
    方式 B · JSON 格式安装指南,复制给 agent
    安装指南
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② 上游 GitHub · 原始来源
    能访问 GitHub?直接去上游安装(实时版,可能已更新)GitHub 原始 ↗
    本页镜像锁定 commit f6b043d9fd;上游为实时仓库。
    来源信息 GitHub 原始
    作者 / 仓库saranambiar / saranambiar/hyperframes-video-agent-skills
    Stars48
    最近推送2026-06-14
    本 skill commitf6b043d9fd
    许可Apache-2.0(仓库根 LICENSE 为 Apache License Version 2.0;GitHub API license.spdx_id = Apache-2.0)
    本站信息
    收录日期2026-09-06
    分类内容创作
    侦查报告AI 侦查 · 2 遍 · 2026-09-06
    本站镜像与 GitHub 原始是不同来源:本站锁定 commit 快照经 /r2 分发;GitHub 为实时上游,内容可能已更新。
    同分类邻近