Communitygithub.com

视频剪辑

用户要剪视频、拼片段、加片头剧照、抽帧/抽音轨、导出 mp4 时使用(Android 宿主 weizhi:video)。桌面无 MediaCodec 不适用。

视频剪辑 とは?

这是一个专门用于 Android 宿主 `weizhi:video` 的视频剪辑技能(SKILL),适合需要裁剪、拼接、添加片头剧照、抽帧或抽音轨,并最终导出 mp4 的场景。技能核心围绕两个导出API:v1(`exportVideo`)适用于简单的首尾裁剪和无淡化拼接;v2(`exportVideo`)支持多轨、图片剧照、Ken Burns 效果及交叉淡化等复杂时间线。此外还提供 `probe`(探测时长/分辨率)和 `extractFrame`(抽帧)等辅助能力。使用时需先加载技能并调用 `find_caps` 获取精确 API 签名,所有编辑逻辑通过 `run_js` 执行 `jobs/*.js` 脚本,并遵循严格的轨道约束(如交叉淡化仅支持 image 轨,轨道间不可重叠等)。该技能不适用于桌面环境。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/fengshihao/agent1-skills/tree/main/skills-src/video-edit

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

プレビュー

スキル README より

ドキュメント

视频剪辑(weizhi:video)

范围

做不做
probe、抽帧/抽音轨、exportVideo 导出用 webview_exec 解码整段 mp4
v1 remux:掐头去尾、无淡化拼接假装支持桌面转码(桌面无本包)

开工协议

  1. 先 load_skill(video-edit) 读本正文。
  2. 写 exportVideo 或复杂时间线前:find_caps 一次(query 含 exportVideo weizhi:video 或具体能力),按返回的调用示例写,不要猜字段名。
  3. 脚本放进 jobs/*.js,用 run_js 的 file 执行;可 timeout_ms 加大(上限 600000)。
  4. 脚本里 API 报错(如 bad argument、unsupported):再 find_caps 核对签名后改脚本。

选路

任务API
只裁一段、多段首尾相接、不重编码v1 exportVideo({ clips: [{ path, startMs?, endMs? }], output })
多轨、剧照片头、Ken Burns、交叉淡化v2 exportVideo({ width, height, tracks, output })

时间线 v2(要点)

  • 剧照 / 图片:type: "image" 轨,durationMs 必填。
  • mp4 片段:type: "video" 轨,inMs / outMs;不要把图片塞进 video 轨。
  • 交叉淡化(仅 image 轨):后一个 clip 写 transition: { type: "crossfade", durationMs: D },且
    startMs_next = startMs_prev + durationMs_prev - D(重叠恰好 D 毫秒)。没有 crossfadeMs 字段。
  • 同一轨上未声明 transition 的 clip 不能时间重叠;报错 overlapping clips 即检查上式与 transition。
  • transition 与 clip 自写的 opacity 关键帧不能同时用。
  • 音轨:type: "audio" 单独一条 track。

示例(两图淡化 + 再接视频):

import { exportVideo } from "weizhi:video";

const D = 300;
await exportVideo({
  width: 720,
  height: 1280,
  tracks: [
    {
      type: "image",
      clips: [
        { src: "a.jpg", startMs: 0, durationMs: 1000 },
        {
          src: "b.jpg",
          startMs: 1000 - D,
          durationMs: 1000,
          transition: { type: "crossfade", durationMs: D },
        },
      ],
    },
    {
      type: "video",
      clips: [{ src: "clip.mp4", startMs: 1700, inMs: 0, outMs: 5000 }],
    },
  ],
  output: "out/final.mp4",
});

推荐流程

  1. probe 源视频时长与分辨率。
  2. 需要封面帧:extractFrame / extractFrames(见 find_caps)。
  3. 复杂片:可先 v1 导出中间 part1.mp4、part2.mp4,再 v1 或 v2 拼接;避免在一轨上硬叠未声明淡化的片段。
  4. 配乐:单独 audio 轨,outMs 对齐画面总长。

编排

  • 一段 jobs/render.js 串行完成探测、导出、复核(可再 probe 成片)。
  • 外层不要用多个工具代替一整段脚本。

对用户怎么说

说明成片文件名与时长;用 [成片](out/xxx.mp4) 链接。不堆栈术语。

関連スキル