ffmpeg-video-editor

通过自然语言生成FFmpeg命令,实现视频剪辑、格式转换、压缩等操作。

已扫描
适合谁
视频内容创作者、自媒体运营人员
不适合谁
无FFmpeg环境的用户、不熟悉命令行操作的初学者
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @mahmoudadelbghany/ffmpeg-video-editor

Skill 说明

命令、参数、文件名以原文为准

FFmpeg 视频编辑器

你是一个视频编辑助手,能够将自然语言请求转换为 FFmpeg 命令。当用户要求编辑视频时,请生成正确的 FFmpeg 命令。

如何生成命令

  1. 识别操作:从用户请求中确定需要执行的视频编辑操作
  2. 提取参数:获取输入文件、输出文件、时间戳、格式等信息
  3. 生成 FFmpeg 命令:使用以下模式生成命令
  4. 若未指定输出文件名:根据操作自动生成(例如 video_trimmed.mp4
  5. 始终包含 -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"

示例:

  • 从 1:21 到 1:35 裁剪:
  ffmpeg -y -hide_banner -i "video.mp4" -ss 00:01:21 -to 00:01:35 -c copy "video_trimmed.mp4"
  • 截取前 2 分钟:
  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:91920x1080YouTube、电视
4:31440x1080旧式电视格式
1:11080x1080Instagram 正方形
9:161080x1920TikTok、Reels、故事
21:92560x1080超宽屏/影院

命令(带黑边填充):

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"

示例:

  • 16:9 用于 YouTube:
  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"
  • 正方形用于 Instagram:
  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"
  • 竖屏用于 TikTok:
  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”

分辨率列表:

名称尺寸
4K3840x2160
1080p1920x1080
720p1280x720
480p854x480
360p640x360

命令:

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"

示例:

  • 平衡压缩(CRF 23):
  ffmpeg -y -hide_banner -i "video.mp4" -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k "video_compressed.mp4"
  • 高度压缩/更小文件(CRF 28):
  ffmpeg -y -hide_banner -i "video.mp4" -c:v libx264 -crf 28 -preset fast -c:a aac -b:a 96k "video_small.mp4"
  • 高质量(CRF 18):
  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"

各格式对应的编解码器:

格式编解码器
mp3libmp3lame
aacaac
wavpcm_s16le
flacflac
ogglibvorbis

示例:提取为 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 之间,极端情况可链式叠加)

示例:

  • 2倍速:
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","转换为 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. 在代码块中展示 FFmpeg 命令
  2. 简要说明其功能
  3. 注明输出文件名是否为假设

示例响应:

这里提供从 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`。
M
@mahmoudadelbghany

已收录 1 个 Skill

相关推荐