mcpField
F
ffmpeg-usage

ffmpeg-usage

github.com/ychoi-kr创意与媒体60201 次安装53 周前更新
代码仓库

关于 ffmpeg-usage

ffmpeg-usage 是面向需要处理视频和音频的用户的技能,提供基于 ffmpeg 的常见命令与工作流。内容覆盖格式转换、剪辑、字幕、压缩及面向社交平台的输出设置。

主要功能

  1. 01视频与音频格式转换
  2. 02缩放、裁剪与旋转视频
  3. 03创建 GIF 与提取缩略图
  4. 04提取、混合及转换音频
  5. 05字幕处理与文件压缩

适用场景

  1. 01将 MOV 转换为 MP4
  2. 02从视频片段制作 GIF
  3. 03提取视频音轨为 MP3
  4. 04为 TikTok 或 Instagram 调整视频

安装

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

$npx skills add https://github.com/ychoi-kr/claude-ffmpeg-skill --skill ffmpeg-usage

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
README.md
validation_report.json
install.sh
validate.py
examples/
conversion.sh

详细介绍

ffmpeg 用法

概述

此 Skill 使用 ffmpeg 提供全面的视频和音频处理功能。它包含经过实战检验的命令和工作流,可用于常见的多媒体任务、特定平台优化,以及质量和文件大小管理的最佳实践。

版本: 1.0.0 要求: ffmpeg >= 4.0,ffprobe(可选,但建议安装)

当用户提及视频或音频处理任务、格式转换、社交媒体优化或多媒体编辑时,Claude 应使用此 Skill。

适用场景

用户提出以下请求时使用此 Skill:

  • 视频格式转换(MP4、WebM、MOV 等)
  • 调整分辨率或宽高比
  • 从视频创建 GIF
  • 提取音频或转换音频格式
  • 视频编辑(剪辑、合并、调整速度、旋转)
  • 字幕处理(烧录、软字幕、提取)
  • 视频压缩或优化
  • 针对特定平台调整格式(YouTube、Instagram、TikTok、Twitter)
  • 提取缩略图或视频帧
  • 批量处理视频/音频文件

前提条件

使用此 skill 前,请确保已安装 ffmpeg:

# macOS
brew install ffmpeg

# Ubuntu/Debian
sudo apt-get install ffmpeg

# Windows (with Chocolatey)
choco install ffmpeg

验证安装:

ffmpeg -version

支持的操作

1. 格式转换

使用优化的设置在不同视频格式之间转换。

MP4 转 WebM:

ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus output.webm

MOV 转 MP4:

ffmpeg -i input.mov -c:v libx264 -c:a aac -strict experimental output.mp4

任意格式转 MP4(通用兼容):

ffmpeg -i input.* -c:v libx264 -preset medium -crf 23 -c:a aac -b:a 128k output.mp4
2. 调整分辨率

调整视频大小,同时保持宽高比。

缩放至 720p:

ffmpeg -i input.mp4 -vf scale=-1:720 -c:a copy output_720p.mp4

缩放至 1080p:

ffmpeg -i input.mp4 -vf scale=-1:1080 -c:a copy output_1080p.mp4

缩放至指定宽度(高度自动调整):

ffmpeg -i input.mp4 -vf scale=1280:-1 -c:a copy output.mp4

缩放并添加填充(信箱模式):

ffmpeg -i input.mp4 -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2" output.mp4
3. 创建 GIF

从视频创建高质量 GIF,同时优化文件大小。

基本 GIF(10 fps):

ffmpeg -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos" output.gif

使用调色板创建高质量 GIF:

# Generate palette
ffmpeg -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos,palettegen" palette.png

# Create GIF using palette
ffmpeg -i input.mp4 -i palette.png -filter_complex "fps=10,scale=480:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif

从指定时间范围创建 GIF:

ffmpeg -ss 00:00:10 -t 5 -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif
4. 音频操作

提取、转换和处理音频流。

提取音频为 MP3:

ffmpeg -i input.mp4 -vn -acodec libmp3lame -q:a 2 output.mp3

提取音频为 WAV:

ffmpeg -i input.mp4 -vn -acodec pcm_s16le -ar 44100 -ac 2 output.wav

转换音频格式:

ffmpeg -i input.wav -c:a aac -b:a 192k output.m4a

添加背景音乐:

ffmpeg -i video.mp4 -i music.mp3 -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 -shortest output.mp4

混合音频(叠加):

ffmpeg -i video.mp4 -i music.mp3 -filter_complex "[0:a][1:a]amix=inputs=2:duration=first" -c:v copy output.mp4
5. 视频编辑

剪辑、拼接和修改视频。

剪辑视频:

# From 10s to 30s
ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:30 -c copy output.mp4

# Duration-based (10s starting from 5s)
ffmpeg -i input.mp4 -ss 00:00:05 -t 10 -c copy output.mp4

拼接视频:

根据格式和兼容性选择方法:

方法 1:Concat 协议(首选——无需临时文件)

# For MPEG formats: .ts, .mpg, .mpeg, .mp3, .aac, etc.
# Direct concatenation without creating list file
ffmpeg -i "concat:file1.mp3|file2.mp3|file3.mp3" -c copy output.mp3
ffmpeg -i "concat:video1.ts|video2.ts|video3.ts" -c copy output.ts

# Works with: TS, MPEG-1, MPEG-2, MP3, AAC
# Does NOT work with: MP4, MOV, MKV (use Method 2 instead)

方法 2:Concat 解复用器(适用于 MP4、MOV、MKV)

# Use process substitution to avoid temporary files
ffmpeg -f concat -safe 0 -i <(printf "file '%s'\n" video1.mp4 video2.mp4 video3.mp4) -c copy output.mp4

# If shell doesn't support process substitution:
printf "file '%s'\n" video1.mp4 video2.mp4 video3.mp4 > list.txt
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4
rm list.txt

方法 3:Concat 滤镜(可接受重新编码时使用)

# Use when videos have different codecs/resolutions
ffmpeg -i video1.mp4 -i video2.mp4 -i video3.mp4 \
  -filter_complex "[0:v][0:a][1:v][1:a][2:v][2:a]concat=n=3:v=1:a=1[v][a]" \
  -map "[v]" -map "[a]" output.mp4

格式选择指南:

  • .mp3、.aac、.ts、.mpg、.mpeg → 使用 concat 协议(方法 1)
  • .mp4、.mov、.mkv → 使用 concat 解复用器(方法 2)
  • 编码格式/分辨率不同 → 使用 concat 滤镜(方法 3)

加快/减慢速度:

# 2x speed
ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" -an output.mp4

# 0.5x speed (slow motion)
ffmpeg -i input.mp4 -filter:v "setpts=2.0*PTS" output.mp4

旋转视频:

# 90 degrees clockwise
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4

# 180 degrees
ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4
6. 字幕处理

添加、提取或烧录字幕。

将字幕烧录到视频中:

ffmpeg -i input.mp4 -vf subtitles=subtitles.srt output.mp4

添加软字幕:

ffmpeg -i input.mp4 -i subtitles.srt -c copy -c:s mov_text output.mp4

提取字幕:

ffmpeg -i input.mp4 -map 0:s:0 subtitles.srt
7. 提取缩略图

将视频帧提取为图像。

提取指定时间点的单帧:

ffmpeg -i input.mp4 -ss 00:00:05 -vframes 1 thumbnail.jpg

提取多个缩略图:

# One frame every 10 seconds
ffmpeg -i input.mp4 -vf fps=1/10 thumb%04d.jpg

# First 10 frames
ffmpeg -i input.mp4 -vframes 10 frame%04d.png
8. 压缩与优化

在保持质量的同时减小文件大小。

压缩视频(均衡):

ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4

高压缩(文件更小):

ffmpeg -i input.mp4 -c:v libx264 -crf 28 -preset veryslow -c:a aac -b:a 96k output.mp4

针对 Web 压缩:

ffmpeg -i input.mp4 -c:v libx264 -preset medium -crf 23 -movflags +faststart -c:a aac -b:a 128k output.mp4

特定平台预设

YouTube 优化
ffmpeg -i input.mp4 \
  -c:v libx264 -preset slow -crf 18 \
  -c:a aac -b:a 192k \
  -pix_fmt yuv420p \
  -movflags +faststart \
  youtube.mp4
Instagram 快拍(9:16)
ffmpeg -i input.mp4 \
  -vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2" \
  -c:v libx264 -preset medium -crf 23 \
  -c:a aac -b:a 128k \
  -t 15 \
  instagram_story.mp4
Twitter/X(16:9,最长 2:20)
ffmpeg -i input.mp4 \
  -vf scale=1280:720 \
  -c:v libx264 -preset medium -crf 23 \
  -c:a aac -b:a 128k \
  -t 140 \
  twitter.mp4
TikTok(9:16)
ffmpeg -i input.mp4 \
  -vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2" \
  -c:v libx264 -preset medium -crf 23 \
  -c:a aac -b:a 128k \
  -t 60 \
  tiktok.mp4

常见用例

优化屏幕录制
# Reduce file size of screen recordings
ffmpeg -i screen_recording.mov \
  -c:v libx264 -preset medium -crf 23 \
  -vf "scale=1920:-1" \
  -c:a aac -b:a 128k \
  optimized.mp4
批量转换
# Convert all MOV files to MP4
for i in *.mov; do
  ffmpeg -i "$i" -c:v libx264 -crf 23 -c:a aac "${i%.mov}.mp4"
done
根据图像创建视频
# From image sequence
ffmpeg -framerate 30 -pattern_type glob -i '*.jpg' \
  -c:v libx264 -pix_fmt yuv420p \
  output.mp4

# Single image to video (5 seconds)
ffmpeg -loop 1 -i image.jpg -c:v libx264 -t 5 -pix_fmt yuv420p output.mp4

最佳实践

  1. 始终先检查输入文件:

    ffmpeg -i input.mp4
    # Or use ffprobe for detailed info
    ffprobe -v quiet -print_format json -show_format -show_streams input.mp4
    
  2. 尽可能使用 -c copy,以避免重新编码:

    ffmpeg -i input.mp4 -ss 00:01:00 -t 30 -c copy output.mp4
    
  3. 处理前使用 -t 标志进行预览:

    # Test on first 10 seconds
    ffmpeg -i input.mp4 -t 10 [other options] test.mp4
    
  4. 使用适当的 CRF 值:

    • 18 = 视觉上无损
    • 23 = 高质量(默认值)
    • 28 = 可接受的质量,文件更小
    • 范围:0(无损)到 51(最差质量)
  5. 为网络视频添加 -movflags +faststart:

    • 支持渐进式播放
    • 将元数据移到文件开头

错误处理

使用此技能时,务必:

  1. 确认输入文件存在且可读
  2. 处理前检查 ffmpeg 是否已安装
  3. 确认输出路径可写
  4. 使用适当的消息妥善处理错误
  5. 处理大型文件时显示进度

Claude 使用指南

当用户请求处理视频/音频时:

  1. 识别请求中的任务类型
  2. 从此技能中选择合适的命令
  3. 确认前提条件(已安装 ffmpeg,输入文件存在)
  4. 执行前说明命令的作用
  5. 执行命令并妥善处理错误
  6. 确认输出已成功创建
  7. 如适用,建议优化方案

对于复杂工作流,请分解为多个步骤并逐一说明。

对于视频拼接: 尽可能使用 printf 和进程替换,以避免创建临时文件(参见拼接部分中的方法 2)。仅在必要时才使用临时的 list.txt。

示例

用户:“将这个 MOV 文件转换为 MP4” **回复:**使用 MOV 转 MP4 命令,并采用 H.264 编解码器

用户:“从这个视频制作 GIF,但只截取从第 10 秒开始的 5 秒” **回复:**使用 GIF 创建命令,并指定时间范围

用户:“我需要将这个 4K 视频缩小到 1080p,以便用于网络” **回复:**结合分辨率缩放与网络优化预设

用户:“将音频提取为 MP3” **回复:**使用音频提取命令,并采用 MP3 编解码器

参考资料

评论

支持 Markdown