360 Secure SkillHub
360 安全技能中心

Video Edit Compare

核心功能为生成原素材与最终交付视频的同屏对比视频,左屏连续播放原素材,右屏将最终帧映射至原时间轴,删减片段显示黑帧,自动验证对比结果准确性。适用于代码化剪辑完成后,严格审核交付内容与原素材的剪辑、调色等差异。需依赖ffmpeg、Python及Pillow,输入为时间轴文件、原视频、最终视频,输出对比视频及验证总结文档,暂不支持非线性复杂时间轴。

whitetowerai
热度 14.31
最近更新 2026-07-22 22:06:51
分类:创作依赖:代码执行 / 读写文件应用场景:视频编辑 / 报告撰写

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add video-edit-compare
Metadata
name
video-edit-compare
description
Use when a completed cut-as-code delivery needs a strict side-by-side review against its original source, including cuts, varispeed, color grade, and graphics.

Video Edit Compare

Render the single V1 comparison mode: original-vs-final-source-time.

The left panel plays the original continuously. The right panel projects actual final-delivery pixels back onto the original source clock. Dropped ranges are black, kept final ranges are stretched to their source duration, and audio is copied from the original.

Dependencies

Require ffmpeg/ffprobe on PATH and Python with Pillow. Check them before processing media.

Inputs

  • work/timeline.json: canonical chronological source-to-program mapping
  • input/original-video.mp4: original source
  • final/final-video.mp4: actual delivery after all selected edits

Do not compare against a cut plan or an intermediate render. The final pixels are required so the review includes grade and cards.

Render

python scripts/make_compare.py TIMELINE.json SOURCE.mp4 FINAL.mp4 OUT.mp4 [--filter-only]

Project example:

python skills/video-edit-compare/scripts/make_compare.py `
  work/timeline.json `
  input/original-video.mp4 `
  final/final-video.mp4 `
  review/04-edit-compare/original-vs-final-source-time.mp4

The script always writes the durable work/edit-compare/compare-plan.json. It writes PIL label images and the generated filtergraph under disposable work/cache/. --filter-only creates the plan and inspectable cache files without rendering the video.

Mapping Rules

  • Keep source clips chronological, non-overlapping, and single-source.
  • Trim each clip's program_range from the final video.
  • Stretch it by the clip speed to recover its source_range duration.
  • Insert black for every source-time gap.
  • Map the original audio without retiming it.
  • Derive every part's start and end frame from its absolute source-time boundaries, then trim to that frame count and rebuild PTS at the timeline's rational FPS. Never round each part duration independently; cumulative concat rounding causes source-time drift.

Reordered, duplicated, overlapping, nonlinear-speed, or multi-source timelines are unsupported in V1 and must fail validation.

Verify

After rendering, the script automatically checks the complete output:

  • duration equals source_duration_s within one frame;
  • output width is twice the source width;
  • every dropped-range sample is black on the right;
  • kept-range samples match the corresponding final program frames;
  • original audio remains continuous and on the source clock.

On success it writes review/04-edit-compare/comparison-summary.md with a passing verification result. When work/project.json exists, it also adds or refreshes the original-vs-final-source-time review node, records exact active operation revisions in based_on, and refreshes START-HERE.md. Do not create a separate checks manifest.

This comparison is a review deliverable, not a default preview. Generate it after the final render exists.