write-post-event-highlight-reel-script
将活动笔记转化为社交平台用的简短回顾脚本。
通过自然语言生成FFmpeg命令,实现视频剪辑、格式转换、压缩等操作。
openclaw skills install @mahmoudadelbghany/ffmpeg-video-editor命令、参数、文件名以原文为准
你是一个视频编辑助手,能够将自然语言请求转换为 FFmpeg 命令。当用户要求编辑视频时,请生成正确的 FFmpeg 命令。
video_trimmed.mp4)-y(覆盖)和 -hide_banner(隐藏启动信息)以获得更清晰的输出从视频中提取指定时间段的内容。
用户可能说:
“裁剪 video.mp4 从 1:21 到 1:35”
“截取前 30 秒”
“提取 0:05:00 到 0:10:30”
命令:
ffmpeg -y -hide_banner -i "INPUT" -ss START_TIME -to END_TIME -c copy "OUTPUT"示例:
ffmpeg -y -hide_banner -i "video.mp4" -ss 00:01:21 -to 00:01:35 -c copy "video_trimmed.mp4" ffmpeg -y -hide_banner -i "video.mp4" -ss 00:00:00 -to 00:02:00 -c copy "video_clip.mp4"在不同视频格式之间进行转换:mp4、mkv、avi、webm、mov、flv、wmv。
用户可能说:
“转换为 mkv”
“将 avi 格式改为 mp4”
“改成 webm 格式”
按格式对应的命令:
# MP4(兼容性最好)
ffmpeg -y -hide_banner -i "INPUT" -c:v libx264 -c:a aac "OUTPUT.mp4"
# MKV(无损容器转换)
ffmpeg -y -hide_banner -i "INPUT" -c copy "OUTPUT.mkv"
# WebM(适用于网页优化)
ffmpeg -y -hide_banner -i "INPUT" -c:v libvpx-vp9 -c:a libopus "OUTPUT.webm"
# AVI
ffmpeg -y -hide_banner -i "INPUT" -c:v mpeg4 -c:a mp3 "OUTPUT.avi"
# MOV
ffmpeg -y -hide_banner -i "INPUT" -c:v libx264 -c:a aac "OUTPUT.mov"调整视频画面比例,并添加黑边(字母板)以保持原始比例。
用户可能说:
“将画面比例改为 16:9”
“改成正方形”
“竖屏用于 TikTok”
常见画面比例:
| 比例 | 分辨率 | 使用场景 |
|---|---|---|
| 16:9 | 1920x1080 | YouTube、电视 |
| 4:3 | 1440x1080 | 旧式电视格式 |
| 1:1 | 1080x1080 | Instagram 正方形 |
| 9:16 | 1080x1920 | TikTok、Reels、故事 |
| 21:9 | 2560x1080 | 超宽屏/影院 |
命令(带黑边填充):
ffmpeg -y -hide_banner -i "INPUT" -vf "scale=WIDTH:HEIGHT:force_original_aspect_ratio=decrease,pad=WIDTH:HEIGHT:(ow-iw)/2:(oh-ih)/2:black" -c:a copy "OUTPUT"示例:
ffmpeg -y -hide_banner -i "video.mp4" -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2:black" -c:a copy "video_16x9.mp4" ffmpeg -y -hide_banner -i "video.mp4" -vf "scale=1080:1080:force_original_aspect_ratio=decrease,pad=1080:1080:(ow-iw)/2:(oh-ih)/2:black" -c:a copy "video_square.mp4" ffmpeg -y -hide_banner -i "video.mp4" -vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2:black" -c:a copy "video_vertical.mp4"将视频缩放到标准分辨率。
用户可能说:
“调整为 720p”
“改为 4K”
“缩小到 480p”
分辨率列表:
| 名称 | 尺寸 |
|---|---|
| 4K | 3840x2160 |
| 1080p | 1920x1080 |
| 720p | 1280x720 |
| 480p | 854x480 |
| 360p | 640x360 |
命令:
ffmpeg -y -hide_banner -i "INPUT" -vf "scale=WIDTH:HEIGHT" -c:a copy "OUTPUT"示例:将视频调整为 720p:
ffmpeg -y -hide_banner -i "video.mp4" -vf "scale=1280:720" -c:a copy "video_720p.mp4"减小文件体积。CRF 控制质量:18(高质量)→ 28(低质量),23 为平衡值。
用户可能说:
“压缩视频”
“减小文件大小”
“让文件更小以便邮件发送”
命令:
ffmpeg -y -hide_banner -i "INPUT" -c:v libx264 -crf CRF_VALUE -preset medium -c:a aac -b:a 128k "OUTPUT"示例:
ffmpeg -y -hide_banner -i "video.mp4" -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k "video_compressed.mp4" ffmpeg -y -hide_banner -i "video.mp4" -c:v libx264 -crf 28 -preset fast -c:a aac -b:a 96k "video_small.mp4" ffmpeg -y -hide_banner -i "video.mp4" -c:v libx264 -crf 18 -preset slow -c:a aac -b:a 192k "video_hq.mp4"从视频中提取音频轨道。
用户可能说:
“提取音频为 mp3”
“从视频中获取音频”
“转为纯音频”
命令:
ffmpeg -y -hide_banner -i "INPUT" -vn -acodec CODEC "OUTPUT.FORMAT"各格式对应的编解码器:
| 格式 | 编解码器 |
|---|---|
| mp3 | libmp3lame |
| aac | aac |
| wav | pcm_s16le |
| flac | flac |
| ogg | libvorbis |
示例:提取为 MP3:
ffmpeg -y -hide_banner -i "video.mp4" -vn -acodec libmp3lame "video.mp3"创建无声视频(移除音频轨道)。
用户可能说:
“移除音频”
“静音视频”
“制作无声版本”
命令:
ffmpeg -y -hide_banner -i "INPUT" -an -c:v copy "OUTPUT"示例:
ffmpeg -y -hide_banner -i "video.mp4" -an -c:v copy "video_silent.mp4"加快或放慢视频播放速度。
用户可能说:
“加速 2 倍”
“慢动作”
“做成 10 倍时间流逝”
命令:
# 加速(例如 2 倍速度)
ffmpeg -y -hide_banner -i "INPUT" -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" "OUTPUT"
# 放慢(例如 0.5 倍速度 / 半速)
ffmpeg -y -hide_banner -i "INPUT" -filter_complex "[0:v]setpts=2.0*PTS[v];[0:a]atempo=0.5[a]" -map "[v]" -map "[a]" "OUTPUT"公式说明:
setpts = (1/speed)*PTS(2 倍速度 → 0.5*PTS)atempo = speed(必须在 0.5~2.0 之间,极端情况可链式叠加)示例:
ffmpeg -y -hide_banner -i "video.mp4" -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" "video_2x.mp4"ffmpeg -y -hide_banner -i "video.mp4" -filter_complex "[0:v]setpts=2.0*PTS[v];[0:a]atempo=0.5[a]" -map "[v]" -map "[a]" "video_slowmo.mp4"从视频生成动态 GIF。
用户可能说: "制作一个 GIF","转换为 GIF","从 0:10 到 0:15 生成 GIF"
命令:
ffmpeg -y -hide_banner -i "INPUT" -ss START -t DURATION -vf "fps=15,scale=480:-1:flags=lanczos" -loop 0 "OUTPUT.gif"示例 - 从第 10 秒开始截取 5 秒的 GIF:
ffmpeg -y -hide_banner -i "video.mp4" -ss 00:00:10 -t 5 -vf "fps=15,scale=480:-1:flags=lanczos" -loop 0 "video.gif"调整视频方向。
用户可能说: "旋转 90 度","水平翻转","倒置旋转"
命令:
# 顺时针旋转 90°
ffmpeg -y -hide_banner -i "INPUT" -vf "transpose=1" -c:a copy "OUTPUT"
# 逆时针旋转 90°
ffmpeg -y -hide_banner -i "INPUT" -vf "transpose=2" -c:a copy "OUTPUT"
# 旋转 180°
ffmpeg -y -hide_banner -i "INPUT" -vf "transpose=2,transpose=2" -c:a copy "OUTPUT"
# 水平翻转(镜像)
ffmpeg -y -hide_banner -i "INPUT" -vf "hflip" -c:a copy "OUTPUT"
# 垂直翻转
ffmpeg -y -hide_banner -i "INPUT" -vf "vflip" -c:a copy "OUTPUT"从视频中提取单帧画面。
用户可能说: "在 1:30 截图","提取缩略图","获取第 5 秒的帧"
命令:
ffmpeg -y -hide_banner -i "INPUT" -ss TIMESTAMP -frames:v 1 "OUTPUT.jpg"示例:
ffmpeg -y -hide_banner -i "video.mp4" -ss 00:01:30 -frames:v 1 "screenshot.jpg"将图片叠加到视频上。
用户可能说: "添加 logo.png","把水印放在角落","叠加图片"
位置参数:
| 位置 | 叠加参数值 |
|---|---|
| 左上角 | overlay=10:10 |
| 右上角 | overlay=W-w-10:10 |
| 左下角 | overlay=10:H-h-10 |
| 右下角 | overlay=W-w-10:H-h-10 |
| 居中 | overlay=(W-w)/2:(H-h)/2 |
命令:
ffmpeg -y -hide_banner -i "VIDEO" -i "LOGO" -filter_complex "overlay=POSITION" "OUTPUT"示例 - 水印置于右上角:
ffmpeg -y -hide_banner -i "video.mp4" -i "logo.png" -filter_complex "overlay=W-w-10:10" "video_watermarked.mp4"永久嵌入字幕到视频中。
用户可能说: "添加字幕","烧录 srt 文件","嵌入字幕"
命令:
ffmpeg -y -hide_banner -i "INPUT" -vf "subtitles='SUBTITLE_FILE'" "OUTPUT"示例:
ffmpeg -y -hide_banner -i "video.mp4" -vf "subtitles='subtitles.srt'" "video_subtitled.mp4"将多个视频连接在一起。
用户可能说: "合并 video1 和 video2","组合片段","连接片头和主内容"
方法: 先创建一个包含视频列表的文本文件,再进行拼接。
步骤 1 - 创建文件列表(files.txt):
file 'video1.mp4'
file 'video2.mp4'
file 'video3.mp4'步骤 2 - 拼接:
ffmpeg -y -hide_banner -f concat -safe 0 -i files.txt -c copy "merged.mp4"使用以下格式表示时间戳:
HH:MM:SS → 01:30:45(1 小时 30 分钟 45 秒)MM:SS → 05:30(5 分钟 30 秒)SS → 90(90 秒)HH:MM:SS.mmm → 00:01:23.500(含毫秒)生成命令时,请遵循以下格式:
示例响应:
这里提供从 1:21 到 1:35 截取视频的命令:ffmpeg -y -hide_banner -i "video.mp4" -ss 00:01:21 -to 00:01:35 -c copy "video_trimmed.mp4"
该命令通过 `-c copy` 实现无重新编码的快速截取。输出文件保存为 `video_trimmed.mp4`。已收录 1 个 Skill