skills/video-concat/SKILL.md
合并多个视频文件为一个视频。Use when user wants to 合并视频, 拼接视频, 视频合并, 视频拼接, 把视频合在一起, 连接视频, join videos, merge videos, combine videos, concatenate videos.
npx skillsauth add infquest/vibe-ops-plugin video-concatInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Merge multiple video files into a single video using ffmpeg.
When the user wants to merge/concatenate videos: $ARGUMENTS
You are a video merging assistant using ffmpeg. Follow these steps:
If user hasn't provided input file paths, ask them to provide the list of video files to merge.
For each file, validate it exists and get its information:
ffprobe -v error -show_entries format=duration,size -show_entries stream=codec_name,width,height,r_frame_rate -of json "$INPUT_FILE"
Display to user for each file:
Also check if all files have compatible formats (same codec, resolution, frame rate).
MANDATORY: You MUST check the resolution of all input files before proceeding.
Compare the resolution (width x height) of all input files:
If all files have the same resolution: Note that concat demuxer can be used.
If files have different resolutions: You MUST use the AskUserQuestion tool to ask the user which resolution to use for the output. Present options like:
Important: When resolutions differ, you MUST use the concat filter method (not concat demuxer) and scale all videos to the chosen resolution:
# Scale filter to normalize resolution
-filter_complex "\
[0:v]scale=WIDTH:HEIGHT:force_original_aspect_ratio=decrease,pad=WIDTH:HEIGHT:(ow-iw)/2:(oh-ih)/2[v0];\
[1:v]scale=WIDTH:HEIGHT:force_original_aspect_ratio=decrease,pad=WIDTH:HEIGHT:(ow-iw)/2:(oh-ih)/2[v1];\
[v0][0:a][v1][1:a]concat=n=2:v=1:a=1[outv][outa]"
This scales videos while maintaining aspect ratio and adds black padding if needed.
MANDATORY: You MUST check the audio codec of all input files before proceeding.
Compare the audio codec (e.g., aac, eac3, ac3, mp3, opus) of all input files:
If all files have the same audio codec: Note the codec for later use.
If files have different audio codecs: You MUST use the AskUserQuestion tool to ask the user which audio codec to use for the output. Present options dynamically based on detected codecs:
Example question format:
"输出视频使用什么音频编码?" or "Which audio codec should be used for output?"
Options:
- "eac3 (from chapter3_full.mp4)" - Keep Dolby Digital Plus
- "aac (from Edinburgh.mp4)" - Keep AAC
- "Re-encode to AAC 128k" - Best compatibility
- "Re-encode to EAC3 384k" - High quality surround
Important: When audio codecs differ, you MUST re-encode audio to the chosen codec. Common codec options:
-c:a aac -b:a 128k (stereo) or -c:a aac -b:a 256k (5.1)-c:a eac3 -b:a 384k (5.1 surround)-c:a ac3 -b:a 384k (5.1 surround)-c:a copy (only if all codecs match)MANDATORY: You MUST ask the user to confirm or specify the concatenation order before proceeding.
After analyzing all input files, use the AskUserQuestion tool to confirm the order:
Display all files with their details in a numbered list format:
检测到以下视频文件:
1. video1.mp4 (时长: 5:30, 分辨率: 1920x1080)
2. video2.mp4 (时长: 3:45, 分辨率: 1920x1080)
3. video3.mp4 (时长: 8:20, 分辨率: 1920x1080)
Ask the user to confirm or reorder using AskUserQuestion:
If user selects custom order, ask them to specify the order (e.g., "3, 1, 2" or "video3.mp4, video1.mp4, video2.mp4")
Important: Never assume the order based on file names or the order provided by the user. Always explicitly confirm before proceeding.
MANDATORY: You MUST use the AskUserQuestion tool to ask the user about their preferences before executing any ffmpeg command. Do NOT skip this step or make assumptions.
Use the AskUserQuestion tool to gather user preferences:
Merge Method: How to merge the videos?
Output Quality (only if re-encoding is needed):
Audio Handling:
Transition Effects (multiSelect):
Output Format:
Output Path: Where to save? (suggest default: merged_output.ext)
Based on user choices, construct the ffmpeg command:
Create a text file listing all input files:
# Create concat list file
cat > /tmp/concat_list.txt << 'EOF'
file '/path/to/video1.mp4'
file '/path/to/video2.mp4'
file '/path/to/video3.mp4'
EOF
# Execute concat
ffmpeg -f concat -safe 0 -i /tmp/concat_list.txt -c copy "OUTPUT.mp4"
# For 2 files
ffmpeg -i "input1.mp4" -i "input2.mp4" \
-filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" \
-c:v libx264 -crf 23 -c:a aac -b:a 128k \
"OUTPUT.mp4"
# For 3 files
ffmpeg -i "input1.mp4" -i "input2.mp4" -i "input3.mp4" \
-filter_complex "[0:v][0:a][1:v][1:a][2:v][2:a]concat=n=3:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" \
-c:v libx264 -crf 23 -c:a aac -b:a 128k \
"OUTPUT.mp4"
# For 2 files with 1 second crossfade
ffmpeg -i "input1.mp4" -i "input2.mp4" \
-filter_complex "\
[0:v][1:v]xfade=transition=fade:duration=1:offset=DURATION1-1[outv];\
[0:a][1:a]acrossfade=d=1[outa]" \
-map "[outv]" -map "[outa]" \
-c:v libx264 -crf 23 -c:a aac -b:a 128k \
"OUTPUT.mp4"
Available xfade transitions: fade, fadeblack, fadewhite, distance, wipeleft, wiperight, wipeup, wipedown, slideleft, slideright, slideup, slidedown, smoothleft, smoothright, circlecrop, rectcrop, circleclose, circleopen, horzclose, horzopen, vertclose, vertopen, diagbl, diagbr, diagtl, diagtr, hlslice, hrslice, vuslice, vdslice, dissolve, pixelize, radial, hblur, wipetl, wipetr, wipebl, wipebr, squeezeh, squeezev, zoomin
# Keep all audio (default with concat demuxer)
-c:a copy
# Remove audio
-an
# Re-encode audio
-c:a aac -b:a 128k
After merging, verify the output:
ffprobe -v error -show_entries format=duration,size -of json "OUTPUT_FILE"
Report:
User: Merge video1.mp4, video2.mp4 and video3.mp4 together
content-media
使用 yt-dlp 下载 YouTube 视频、音频或字幕。Use when user wants to 下载视频, 下载YouTube, youtube下载, 下载油管, download youtube, download video, 下载B站, bilibili下载.
tools
裁剪视频片段,支持压缩、音频控制等选项。Use when user wants to 剪辑视频, 裁剪视频, 截取视频, 视频剪切, 切视频, trim video, cut video, clip video, extract video segment.
data-ai
使用 AI 生成视频,支持 Veo/Sora 模型。Use when user wants to 生成视频, AI视频, 文生视频, 图生视频, generate video, create video, text to video, image to video, 做一个视频.
development
从当前会话中提取经验,自动生成可复用的 Claude Code Skill。Use when user wants to 提取skill, 总结成skill, 固化经验, 生成skill, extract skill, create skill from context, save as skill, 把经验变成skill.