Skip to main content

ffmpeg-usage

基于Ffmpeg和第三方API的音视频处理,包括,格式转换、视频拼接、合并、尺寸调整、压缩、GIF 制作、音频提取、字幕处理、社交平台优化、文案提取,文案转录等

Source facts

Repository
SpaceZephyr/myskill
Last source activity
March 20, 2026 at 10:38
Detected SKILL.md language
Chinese
Stars
341
Forks
84

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
ffmpeg-usage
description
基于Ffmpeg和第三方API的音视频处理,包括,格式转换、视频拼接、合并、尺寸调整、压缩、GIF 制作、音频提取、字幕处理、社交平台优化、文案提取,文案转录等
# ffmpeg 使用指南 ## 概述 本技能提供基于 ffmpeg 的全面音视频处理能力,包括经过实战验证的命令和工作流,适用于常见多媒体任务、平台特定优化,以及质量与文件大小管理的最佳实践。 **版本:** 1.0.0 **要求:** ffmpeg >= 4.0,ffprobe(可选但推荐) 当用户提及视频或音频处理任务、格式转换、社交媒体优化或多媒体编辑时,Claude 应使用本技能。 ## 适用场景 当用户需要以下操作时使用本技能: - 视频格式转换(MP4、WebM、MOV 等) - 分辨率缩放或宽高比调整 - 从视频创建 GIF - 音频提取或格式转换 - 视频编辑(裁剪、合并、变速、旋转) - 字幕处理(硬字幕、软字幕、提取字幕) - 视频压缩或优化 - 平台特定格式化(YouTube、Instagram、TikTok、Twitter) - 缩略图或帧提取 - 批量处理音视频文件 ## 前置条件 使用本技能前,请确保已安装 ffmpeg: ```bash # macOS brew install ffmpeg # Ubuntu/Debian sudo apt-get install ffmpeg # Windows(使用 Chocolatey) choco install ffmpeg ``` 验证安装: ```bash ffmpeg -version ``` ## 支持的操作 ### 1. 格式转换 在不同视频格式之间转换,并使用优化设置。 **MP4 转 WebM:** ```bash ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus output.webm ``` **MOV 转 MP4:** ```bash ffmpeg -i input.mov -c:v libx264 -c:a aac -strict experimental output.mp4 ``` **任意格式转 MP4(通用兼容):** ```bash ffmpeg -i input.* -c:v libx264 -preset medium -crf 23 -c:a aac -b:a 128k output.mp4 ``` ### 2. 分辨率调整 调整视频尺寸同时保持宽高比。 **缩放到 720p:** ```bash ffmpeg -i input.mp4 -vf scale=-1:720 -c:a copy output_720p.mp4 ``` **缩放到 1080p:** ```bash ffmpeg -i input.mp4 -vf scale=-1:1080 -c:a copy output_1080p.mp4 ``` **缩放到指定宽度(高度自适应):** ```bash ffmpeg -i input.mp4 -vf scale=1280:-1 -c:a copy output.mp4 ``` **带填充缩放(黑边填充/信箱模式):** ```bash 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 帧/秒):** ```bash ffmpeg -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos" output.gif ``` **高质量 GIF(使用调色板):** ```bash # 生成调色板 ffmpeg -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos,palettegen" palette.png # 使用调色板创建 GIF ffmpeg -i input.mp4 -i palette.png -filter_complex "fps=10,scale=480:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif ``` **从指定时间范围创建 GIF:** ```bash 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:** ```bash ffmpeg -i input.mp4 -vn -acodec libmp3lame -q:a 2 output.mp3 ``` **提取音频为 WAV:** ```bash ffmpeg -i input.mp4 -vn -acodec pcm_s16le -ar 44100 -ac 2 output.wav ``` **转换音频格式:** ```bash ffmpeg -i input.wav -c:a aac -b:a 192k output.m4a ``` **添加背景音乐:** ```bash ffmpeg -i video.mp4 -i music.mp3 -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 -shortest output.mp4 ``` **混合音频(叠加):** ```bash ffmpeg -i video.mp4 -i music.mp3 -filter_complex "[0:a][1:a]amix=inputs=2:duration=first" -c:v copy output.mp4 ``` ### 5. 视频编辑 裁剪、拼接和修改视频。 **裁剪视频:** ```bash # 从第 10 秒到第 30 秒 ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:30 -c copy output.mp4 # 基于时长(从第 5 秒开始,截取 10 秒) ffmpeg -i input.mp4 -ss 00:00:05 -t 10 -c copy output.mp4 ``` **拼接视频:** 根据格式和兼容性选择方法: **方法一:Concat 协议(推荐——无需临时文件)** ```bash # 适用于 MPEG 格式:.ts、.mpg、.mpeg、.mp3、.aac 等 # 直接拼接,无需创建列表文件 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 # 支持格式:TS、MPEG-1、MPEG-2、MP3、AAC # 不支持:MP4、MOV、MKV(请使用方法二) ``` **方法二:Concat 分离器(适用于 MP4、MOV、MKV)** ```bash # 使用进程替换避免临时文件 ffmpeg -f concat -safe 0 -i <(printf "file '%s'\n" video1.mp4 video2.mp4 video3.mp4) -c copy output.mp4 # 如果 shell 不支持进程替换: 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 ``` **方法三:Concat 滤镜(可接受重新编码时使用)** ```bash # 当视频编码/分辨率不同时使用 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 协议(方法一) - `.mp4`、`.mov`、`.mkv` → 使用 concat 分离器(方法二) - 不同编码/分辨率 → 使用 concat 滤镜(方法三) **加速/减速:** ```bash # 2 倍速 ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" -an output.mp4 # 0.5 倍速(慢动作) ffmpeg -i input.mp4 -filter:v "setpts=2.0*PTS" output.mp4 ``` **旋转视频:** ```bash # 顺时针旋转 90 度 ffmpeg -i input.mp4 -vf "transpose=1" output.mp4 # 旋转 180 度 ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4 ``` ### 6. 字幕处理 添加、提取或烧录字幕。 **烧录字幕到视频(硬字幕):** ```bash ffmpeg -i input.mp4 -vf subtitles=subtitles.srt output.mp4 ``` **添加软字幕:** ```bash ffmpeg -i input.mp4 -i subtitles.srt -c copy -c:s mov_text output.mp4 ``` **提取字幕:** ```bash ffmpeg -i input.mp4 -map 0:s:0 subtitles.srt ``` ### 7. 缩略图提取 从视频中提取帧作为图片。 **在指定时间提取单帧:** ```bash ffmpeg -i input.mp4 -ss 00:00:05 -vframes 1 thumbnail.jpg ``` **提取多张缩略图:** ```bash # 每 10 秒提取一帧 ffmpeg -i input.mp4 -vf fps=1/10 thumb%04d.jpg # 提取前 10 帧 ffmpeg -i input.mp4 -vframes 10 frame%04d.png ``` ### 8. 压缩与优化 在保持质量的同时减小文件大小。 **视频压缩(均衡模式):** ```bash ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4 ``` **高压缩(更小文件):** ```bash ffmpeg -i input.mp4 -c:v libx264 -crf 28 -preset veryslow -c:a aac -b:a 96k output.mp4 ``` **Web 优化压缩:** ```bash ffmpeg -i input.mp4 -c:v libx264 -preset medium -crf 23 -movflags +faststart -c:a aac -b:a 128k output.mp4 ``` ## 平台特定预设 ### YouTube 优化 ```bash 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) ```bash 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 秒) ```bash 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) ```bash 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 ``` ## 常见用例 ### 屏幕录制优化 ```bash # 减小屏幕录制文件大小 ffmpeg -i screen_recording.mov \ -c:v libx264 -preset medium -crf 23 \ -vf "scale=1920:-1" \ -c:a aac -b:a 128k \ optimized.mp4 ``` ### 批量转换 ```bash # 将所有 MOV 文件转换为 MP4 for i in *.mov; do ffmpeg -i "$i" -c:v libx264 -crf 23 -c:a aac "${i%.mov}.mp4" done ``` ### 从图片创建视频 ```bash # 从图片序列创建 ffmpeg -framerate 30 -pattern_type glob -i '*.jpg' \ -c:v libx264 -pix_fmt yuv420p \ output.mp4 # 单张图片转视频(5 秒) ffmpeg -loop 1 -i image.jpg -c:v libx264 -t 5 -pix_fmt yuv420p output.mp4 ``` ## 最佳实践 1. **始终先检查输入文件:** ```bash ffmpeg -i input.mp4 # 或使用 ffprobe 获取详细信息 ffprobe -v quiet -print_format json -show_format -show_streams input.mp4 ``` 2. **尽可能使用 `-c copy` 避免重新编码:** ```bash ffmpeg -i input.mp4 -ss 00:01:00 -t 30 -c copy output.mp4 ``` 3. **处理前用 `-t` 参数预览效果:** ```bash # 先测试前 10 秒 ffmpeg -i input.mp4 -t 10 [其他参数] test.mp4 ``` 4. **使用合适的 CRF 值:** - 18 = 视觉无损 - 23 = 高质量(默认值) - 28 = 可接受质量,文件更小 - 范围:0(无损)到 51(最差质量) 5. **为 Web 视频添加 `-movflags +faststart`:** - 启用渐进式播放 - 将元数据移至文件开头 ## 错误处理 使用本技能时,请始终: 1. 验证输入文件存在且可读 2. 处理前检查 ffmpeg 是否已安装 3. 验证输出路径可写 4. 使用适当的提示信息优雅处理错误 5. 处理大文件时显示进度 ## Claude 使用指南 当用户请求音视频处理时: 1. **识别任务类型** 2. **从本技能中选择合适的命令** 3. **验证前置条件**(ffmpeg 已安装、输入文件存在) 4. **执行前说明命令的作用** 5. **执行命令**并进行错误处理 6. **验证输出**是否成功创建 7. **提供优化建议**(如适用) 对于复杂工作流,应分步骤执行并逐一说明。 **视频拼接注意事项:** 尽可能使用 printf 配合进程替换来避免临时文件(参见拼接部分的方法二)。仅在必要时使用临时 list.txt 文件。 ## 示例 **用户:**"把这个 MOV 文件转成 MP4" **响应:** 使用 H.264 编码的 MOV 转 MP4 命令 **用户:**"从这个视频做一个 GIF,从第 10 秒开始只要 5 秒" **响应:** 使用带时间范围的 GIF 创建命令 **用户:**"我需要把这个 4K 视频缩小到 1080p 用于网页" **响应:** 结合分辨率缩放和 Web 优化预设 **用户:**"提取音频为 MP3" **响应:** 使用 MP3 编码的音频提取命令 ## 参考资料 - FFmpeg 官方文档:https://ffmpeg.org/documentation.html - FFmpeg Wiki:https://trac.ffmpeg.org/wiki - 支持的编解码器:https://ffmpeg.org/ffmpeg-codecs.html - 滤镜文档:https://ffmpeg.org/ffmpeg-filters.html 文案提取和转录功能,当涉及到转录和文案提取功能的时候,参考下面文档: # Voice Model API (本地语音转录) 应用启动后自动在 `http://127.0.0.1:18923` 开启本地 HTTP 接口,供 Claude Skill 等外部调用方使用。 ## 接口列表 ### 1. 查询模型状态 ``` GET /v1/audio/models/status ``` **响应示例:** ```json { "installed": true, "modelDir": "/Users/xxx/.newmax/models/sensevoice-small", "modelSize": 239549735 } ``` ```json { "installed": false, "modelDir": "/Users/xxx/.newmax/models/sensevoice-small", "missingFiles": ["model.int8.onnx", "tokens.txt"] } ``` ### 2. 音频转录 ``` POST /v1/audio/transcriptions Content-Type: application/json ``` **请求参数:** | 字段 | 类型 | 必填 | 说明 | |------|------|------|------| | audioPath | string | 是 | 音频文件的本地绝对路径 |
View on GitHub
This SKILL.md is very large, so SkillsMP previews the first section here. View on GitHub