Twitch
Twitch 直播集成技能。
clawhub install twitchinSaiAI 智能编辑工具,用于直播场景下的视频/音频处理,包括转码、滤镜、流媒体处理、元数据操作和复杂 FFmpeg 滤镜图操作。
Use when performing video/audio processing tasks including transcoding, filtering, streaming, metadata manipulation, or complex filtergraph operations with FFmpeg.
# 安装 Skill(会下载 SKILL.md 到 .claude/skills/) clawhub install insaiai-intelligent-editing # 之后直接对 Claude 说"用 inSaiAI Intelligent Editing 帮我…"即可
# 同样的安装命令,兼容所有支持 SKILL.md 的 AI 编程工具 clawhub install insaiai-intelligent-editing
此 Skill 兼容 OpenClaw 标准。 安装后自动生成 SKILL.md 文件,任何支持 OpenClaw 协议的 AI Agent(Claude Code、Cursor、Windsurf 等)均可直接调用。
支持实时流处理,可能需要更高的系统配置
# Basic Transcoding (MP4 to MKV)
ffmpeg -i input.mp4 output.mkv
# Change Video Codec (to H.265/HEVC)
ffmpeg -i input.mp4 -c:v libx265 -crf 28 -c:a copy output.mp4
# Extract Audio (No Video)
ffmpeg -i input.mp4 -vn -c:a libmp3lame -q:a 2 output.mp3
# Resize/Scale Video
ffmpeg -i input.mp4 -vf "scale=1280:720" output.mp4
# Cut Video (Start at 10s, Duration 30s)
ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:30 -c copy output.mp4
# Fast Precise Cut (Re-encoding only the cut points is complex, so standard re-encoding is safer for precision)
ffmpeg -ss 00:00:10 -i input.mp4 -to 00:00:40 -c:v libx264 -crf 23 -c:a aac output.mp4
# Concatenate Files (using demuxer)
# Create filelist.txt: file 'part1.mp4' \n file 'part2.mp4'
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4
# Speed Up/Slow Down Video (2x speed)
ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mp4
-c:v libx264 | Standard H.264 encoding (best compatibility) |
| -c:v libx265 | H.265/HEVC encoding (best compression/quality) |
| -crf [0-51] | Constant Rate Factor (lower is higher quality, 18-28 recommended) |
| -preset | Encoding speed vs compression (ultrafast, medium, veryslow) |
| -c:a copy | Pass-through audio without re-encoding (saves time/quality) |scale | Changing resolution (e.g., scale=1920:-1 for 1080p width) |
| crop | Removing edges (e.g., crop=w:h:x:y) |
| transpose | Rotating video (1=90deg CW, 2=90deg CCW) |
| fps | Changing frame rate (e.g., fps=30) |
| drawtext | Adding text overlays/watermarks |
| overlay | Picture-in-picture or adding image watermarks |
| fade | Adding fade-in/out effects (e.g., fade=in:0:30 for first 30 frames) |
| volume | Adjusting audio levels (e.g., volume=1.5 for 150% volume) |
| setpts | Changing video speed (e.g., setpts=0.5*PTS for double speed) |
| atempo | Changing audio speed without pitch shift (0.5 to 2.0) |ffprobe -v error -show_format -show_streams | Getting detailed technical info of a file |
| -metadata title="Name" | Setting global metadata tags |
| -map | Selecting specific streams (e.g., -map 0:v:0 -map 0:a:1) |filter_complex when you need to process multiple inputs or create non-linear filter chains.# Example: Adding a watermark at the bottom right
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=main_w-overlay_w-10:main_h-overlay_h-10" output.mp4
# Example: Vertical Stack (2 videos)
ffmpeg -i top.mp4 -i bottom.mp4 -filter_complex "vstack=inputs=2" output.mp4
# Example: Side-by-Side (2 videos)
ffmpeg -i left.mp4 -i right.mp4 -filter_complex "hstack=inputs=2" output.mp4
# Example: Grid (4 videos 2x2)
ffmpeg -i v1.mp4 -i v2.mp4 -i v3.mp4 -i v4.mp4 -filter_complex "[0:v][1:v]hstack=inputs=2[top];[2:v][3:v]hstack=inputs=2[bottom];[top][bottom]vstack=inputs=2" output.mp4
# Example: Fade Transition (Simple crossfade between two clips)
# Requires manual offset calculation, using xfade is better
ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "xfade=transition=fade:duration=1:offset=9" output.mp4
ffmpeg -i input.mp4 -vf "fps=15,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif
ffmpeg -i voice.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
# Pass 1: Analyze
ffmpeg -i shaky.mp4 -vf vidstabdetect -f null -
# Pass 2: Transform
ffmpeg -i shaky.mp4 -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 output.mp4
# brightness=0.05, contrast=1.1, saturation=1.2
ffmpeg -i input.mp4 -vf "eq=brightness=0.05:contrast=1.1:saturation=1.2" output.mp4
ffmpeg -i input.mp4 -vf "select='not(mod(n,100))',scale=320:-1,tile=3x3" -frames:v 1 preview.png
ffmpeg -i input.mp4 -af silenceremove=start_periods=1:start_silence=0.1:start_threshold=-50dB:stop_periods=1:stop_silence=0.1:stop_threshold=-50dB output.mp4
# Burn SRT
ffmpeg -i input.mp4 -vf "subtitles=subs.srt" output.mp4
# Burn ASS (supports advanced styling)
ffmpeg -i input.mp4 -vf "ass=subs.ass" output.mp4
# Bitrate = (TargetSize_in_bits) / (Duration_in_seconds)
# 50MB = 400,000 bits. For 60s, bitrate ≈ 6600k
ffmpeg -i input.mp4 -b:v 6000k -maxrate 6000k -bufsize 12000k -c:a aac -b:a 128k output.mp4
ffmpeg -i input.mp4 -filter_complex "select='gt(scene,0.4)',metadata=print:file=scenes.txt" -vsync vfr scene_%03d.png
ffmpeg -i input.mp4 -vf "fps=1/5" img_%03d.jpg
.mov files in a directory to .mp4:
for f in *.mov; do ffmpeg -i "$f" "${f%.mov}.mp4"; done
ffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -b:v 3000k -maxrate 3000k -bufsize 6000k -pix_fmt yuv420p -g 60 -c:a aac -b:a 128k -f flv rtmp://a.rtmp.youtube.com/live2/YOUR_STREAM_KEY
-c:v h264_nvenc |
| Intel (QSV) | H.264 | -c:v h264_qsv |
| Apple (VideoToolbox) | H.265 | -c:v hevc_videotoolbox |-map for complex files to ensure you get the right audio/subtitle tracks.-ss *before* -i for fast seeking (input seeking), or *after* -i for accurate seeking (output seeking).clawhub install insaiai-intelligent-editing && ffmpeg -i input.mp4 -vf "scale=1920:1080,fps=30" -c:v libx264 -preset fast output.mp4