mcpField
V
video-assembly

video-assembly

github.com/mckruz创意与媒体92396 次安装32 周前更新
代码仓库

关于 video-assembly

为视频制作工作流提供素材组装指南,面向需要将视频与语音输出整理为成片的创作者。涵盖 FFmpeg 的常规剪辑处理,以及使用 Remotion 制作复杂合成。

主要功能

  1. 01FFmpeg 拼接、混音与转码
  2. 02添加字幕和片段转场
  3. 03帧提取及速度调整
  4. 04音频响度标准化
  5. 05Remotion 动态合成指南

适用场景

  1. 01合并视频和语音流水线输出
  2. 02为视频添加音乐与字幕
  3. 03制作带动态标注的教程视频

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mckruz/comfyui-expert --skill video-assembly

安装后在 Claude Code 中输入/video-assembly确认已加载。

详细介绍

视频组装

将视频和语音流水线的输出合并为最终交付的视频。

两种组装模式

模式 1:FFmpeg(简单、快速)

适用于:拼接、音频混合、基本转场、格式转换。

除了 FFmpeg 之外无需其他依赖(大多数系统已预装)。

模式 2:Remotion(复杂合成)

适用于:动画字幕、数据可视化、复杂动态图形、基于 React 的模板。

使用现有的 remotion-best-practices skill 获取指导。

FFmpeg 操作

拼接视频片段
# Create file list
echo "file 'clip1.mp4'" > filelist.txt
echo "file 'clip2.mp4'" >> filelist.txt
echo "file 'clip3.mp4'" >> filelist.txt

# Concatenate (same codec/resolution)
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4

# Concatenate (different codecs/resolutions - re-encode)
ffmpeg -f concat -safe 0 -i filelist.txt -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2" -c:v libx264 -crf 19 output.mp4
为视频添加音频
# Replace audio
ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 output.mp4

# Mix audio (keep original + add music)
ffmpeg -i video.mp4 -i music.mp3 -filter_complex "[0:a][1:a]amix=inputs=2:duration=first:dropout_transition=3" -c:v copy output.mp4

# Add audio with volume control
ffmpeg -i video.mp4 -i bgm.mp3 -filter_complex "[1:a]volume=0.3[bg];[0:a][bg]amix=inputs=2:duration=first" -c:v copy output.mp4
添加字幕
# Burn subtitles (SRT file)
ffmpeg -i video.mp4 -vf "subtitles=subs.srt:force_style='FontName=Arial,FontSize=24,PrimaryColour=&HFFFFFF,OutlineColour=&H000000,Outline=2'" -c:a copy output.mp4

# Burn subtitles (ASS file for styled)
ffmpeg -i video.mp4 -vf "ass=subs.ass" -c:a copy output.mp4
片段间的转场
# Crossfade (2 second transition)
ffmpeg -i clip1.mp4 -i clip2.mp4 -filter_complex \
  "[0:v]trim=0:5,setpts=PTS-STARTPTS[v0]; \
   [1:v]trim=0:5,setpts=PTS-STARTPTS[v1]; \
   [v0][v1]xfade=transition=fade:duration=2:offset=3[outv]" \
  -map "[outv]" output.mp4
提取/处理帧
# Extract frames
ffmpeg -i video.mp4 -vf "fps=1" frames/frame_%04d.png

# Create video from frames
ffmpeg -framerate 24 -i frames/frame_%04d.png -c:v libx264 -crf 19 -pix_fmt yuv420p output.mp4

# Speed up/slow down
ffmpeg -i video.mp4 -filter:v "setpts=0.5*PTS" -filter:a "atempo=2.0" fast.mp4   # 2x speed
ffmpeg -i video.mp4 -filter:v "setpts=2.0*PTS" -filter:a "atempo=0.5" slow.mp4   # 0.5x speed
格式转换
# MP4 (H.264) - universal compatibility
ffmpeg -i input.mov -c:v libx264 -crf 19 -preset medium -c:a aac -b:a 192k output.mp4

# WebM (VP9) - web delivery
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus output.webm

# GIF (short clips)
ffmpeg -i input.mp4 -vf "fps=15,scale=480:-1:flags=lanczos" -loop 0 output.gif
质量预设
用途CRF分辨率说明
母版/归档15-17原始文件较大,质量最佳
YouTube 上传18-201920x1080平衡性良好
社交媒体20-231080x1920(竖屏)文件较小
预览/草稿25-281280x720便于快速审核

组装流水线

标准视频
1. Gather clips from comfyui-video-pipeline outputs
2. Gather audio from comfyui-voice-pipeline outputs
3. Normalize audio levels (-16 LUFS for YouTube)
4. Trim/arrange clips to match script timing
5. Add transitions between clips (if multiple)
6. Add background music (optional, lower volume)
7. Add subtitles (if applicable)
8. Export in target format
脱口秀视频
1. Lip-synced video from comfyui-voice-pipeline
2. Add intro/outro (if applicable)
3. Add lower thirds or name cards
4. Add background music at -20dB below speech
5. Normalize speech to -16 LUFS
6. Export
教程/演示视频
1. Screen recordings + talking head overlay
2. Use Remotion for animated annotations
3. Add chapter markers
4. Add subtitles (auto-generate from audio)
5. Export with chapters embedded

音频标准化

# Normalize to -16 LUFS (YouTube standard)
ffmpeg -i input.mp4 -af "loudnorm=I=-16:TP=-1.5:LRA=11" -c:v copy output.mp4

# Two-pass normalization (more accurate)
ffmpeg -i input.mp4 -af loudnorm=I=-16:TP=-1.5:LRA=11:print_format=json -f null -
# Read measured values, then:
ffmpeg -i input.mp4 -af "loudnorm=I=-16:TP=-1.5:LRA=11:measured_I=-20:measured_TP=-2:measured_LRA=8:measured_thresh=-30" -c:v copy output.mp4

Remotion 集成

对于复杂合成,请委托给 remotion-best-practices skill。

在以下情况下使用 Remotion:

  • 需要动画文本/字幕
  • 视频中包含数据可视化
  • 需要复杂动态图形
  • 以编程方式/基于模板生成视频
  • 将基于 React 的 UI 元素作为视频叠加层

传递给 Remotion 的内容:

  • 片段路径和时间
  • 文本内容和样式
  • 动画规格
  • 输出格式要求

输出检查清单

完成组装前,请确认:

  • 音频电平已标准化(YouTube 为 -16 LUFS)
  • 音频无削波(峰值低于 -1.5 dB)
  • 分辨率符合交付目标
  • 全程帧率一致
  • 剪辑处没有黑帧
  • 字幕时间正确(如适用)
  • 文件大小适合交付平台
  • 元数据正确(标题位于文件名中)

参考

  • references/workflows.md - 视频输出格式设置
  • remotion-best-practices skill - 复杂合成指南

评论

支持 Markdown