mcpField
V
video-editor

video-editor

github.com/ckorhonen创意与媒体22147 次安装5 周前更新
代码仓库

关于 video-editor

video-editor 是一项面向视频剪辑与处理的 FFmpeg 指导技能,适用于需要转码、封装转换或排查画质问题的人。内容涵盖编码参数、色彩信息、字幕处理和常见故障排查。

主要功能

  1. 01区分容器、编解码器与编码器
  2. 02指导无损封装转换与重新编码
  3. 03调整 CRF、预设和编码选项
  4. 04处理色彩元数据与字幕
  5. 05排查播放、画质和同步问题
  6. 06提供 FFmpeg 命令示例

适用场景

  1. 01转换视频容器或编码格式
  2. 02在画质与文件大小间取舍
  3. 03修正转码后的色彩或音画不同步
  4. 04为平台或设备准备视频

安装

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

$npx skills add https://github.com/ckorhonen/claude-skills --skill video-editor

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

详细介绍

视频编辑器 - FFmpeg 与编码专家

提供使用 ffmpeg 进行视频编辑、编码和处理的专家指导。本技能涵盖容器格式、编解码器、编码最佳实践,以及视频制作工作流中的质量优化。

何时使用此技能

在以下情况下使用此技能:

  • 对视频文件进行编码或转码
  • 在容器格式之间转换(MKV、MP4 等)
  • 优化编码设置以提升质量或减小文件大小
  • 排查视频质量问题
  • 处理色彩空间和色彩矩阵
  • 为视频硬字幕或软字幕
  • 为特定平台或设备准备视频
  • 了解视频处理后显示异常的原因

核心概念

容器与编解码器

这一区别至关重要。 .mkv 或 .mp4 等文件扩展名代表容器格式,用于封装已经压缩的视频、音频或字幕流。实际压缩由 H.264、H.265、VP9 或 AV1 等编解码器完成。

概念含义示例
容器封装视频、音频和字幕流的包装格式MKV、MP4、AVI、MOV、WebM
编解码器对视频进行压缩和解压缩的算法H.264、H.265/HEVC、VP9、AV1
编码器实现编解码器的软件x264、x265、libvpx、NVENC
重新封装与重新编码
操作作用对质量的影响速度
重新封装在容器之间移动媒体流,不进行重新压缩无(无损)非常快
重新编码使用新设置解码并重新编码视频一定会损失质量慢

经验法则: 如果只需要更改容器格式,请重新封装。只有在绝对必要时才重新编码。

质量原则

“质量”的实际含义

视频质量衡量的是输出与源视频的相似程度。每一步处理都会让视频进一步偏离原始内容。无法提升质量,只能保留或损失质量。

常见误解
误解事实
分辨率越高,质量越好分辨率只是尺寸;720p 视频可能比 4K 视频看起来更好
比特率越高,质量越好编码器效率更重要;不同文件大小也可能达到相同质量
H.265 总能缩小 50%这取决于编码器设置;配置不佳的 H.265 可能比 H.264 效果更差
硬件编码足以保证质量硬件编码器(NVENC、QuickSync)会牺牲质量来换取速度
AI 升频能提升质量升频会添加源视频中不存在的人工细节
编码质量优先级

从最重要到最不重要:

  1. 编码器设置(CRF、预设、调优)
  2. 编码器选择(x264/x265 与硬件编码器)
  3. 编解码器(H.265 与 H.264、VP9)

快速参考:FFmpeg 命令

重新封装(更改容器,不损失质量)
# MKV to MP4 (preserves all streams)
ffmpeg -i input.mkv -c copy output.mp4

# MP4 to MKV
ffmpeg -i input.mp4 -c copy output.mkv
基本编码
# Encode with x264, copy audio
ffmpeg -i input.mkv -c:a copy -c:v libx264 -preset slower -crf 20 output.mkv

# Encode with x265
ffmpeg -i input.mkv -c:a copy -c:v libx265 -preset slower -crf 22 output.mkv
以质量为重点的编码
# High-quality x264 for animation
ffmpeg -i input.mkv -c:a copy -c:v libx264 -preset slower -crf 18 \
  -x264-params bframes=8 output.mkv

# High-quality x265
ffmpeg -i input.mkv -c:a copy -c:v libx265 -preset slower -crf 20 \
  -x265-params bframes=8 output.mkv

深入了解编码设置

CRF(恒定码率因子)

CRF 用于控制质量与文件大小之间的权衡。数值越低,质量越高,文件越大。

CRF 范围质量级别典型用途
0无损归档、中间文件
15-18视觉无损高质量归档
19-23高质量常规用途、流媒体
24-28中等质量网页、移动设备
29+低质量预览、缩略图

注意: 不同编码器的 CRF 值不能直接比较。x265 CRF 22 ≈ x264 CRF 20。

预设

预设控制编码速度与压缩效率之间的权衡。

预设速度文件大小适用场景
ultrafast最快最大直播
fast快大快速转码
medium中等中等默认
slow慢较小注重画质
slower很慢更小画质优先时推荐
veryslow极慢最小最大压缩率

建议: 注重画质时使用 slower。slower 与 veryslow 之间的画质差异很小,但耗时却显著增加。

调优选项
调优项最适合
film带有胶片颗粒的真人影像
animation卡通、动漫、色块区域
grain保留胶片颗粒
stillimage幻灯片、静态内容
fastdecode在性能较弱的设备上播放
# Animation tuning
ffmpeg -i input.mkv -c:v libx264 -preset slower -crf 20 -tune animation output.mkv

容器特定注意事项

MKV (Matroska)

优点:

  • 支持几乎所有编解码器
  • 支持多个音轨和字幕轨
  • 支持章节标记
  • 支持可变帧率

缺点:

  • 与部分设备/软件的兼容性较差
  • 部分流媒体服务不接受此格式
MP4

优点:

  • 通用兼容性
  • 适合 Web
  • 所有设备均支持硬件解码

缺点:

  • 字幕格式支持有限
  • 编解码器要求更严格
  • 通常要求恒定帧率
为编辑软件将 MKV 转换为 MP4

某些编辑软件要求 MP4 使用恒定帧率。请使用以下两遍处理方法:

# Step 1: Initial remux with timescale adjustment
ffmpeg -i input.mkv -c copy -video_track_timescale 24000 intermediate.mp4

# Step 2: Fix timestamps
ffmpeg -i intermediate.mp4 -c copy \
  -bsf:v "setts=dts=1001*round(DTS/1001):pts=1001*round(PTS/1001)" output.mp4

色彩空间与色彩管理

了解色彩元数据

视频以 YCbCr 格式存储颜色,并通过元数据指定:

  • 色彩矩阵:如何将 YCbCr 转换为 RGB(BT.709、BT.601)
  • 色彩范围:有限范围(16-235)与全范围(0-255)
  • 色度位置:色彩采样的位置
常见问题
症状可能原因
颜色发灰色彩范围错误(将有限范围当作全范围处理)
黑位压暗/白位过曝色彩范围错误(将全范围当作有限范围处理)
偏绿/偏粉色彩矩阵错误
编码后颜色看起来“不对”色彩元数据不匹配
保留色彩信息
# Explicitly preserve color metadata
ffmpeg -i input.mkv -c:v libx264 -preset slower -crf 20 \
  -colorspace bt709 -color_primaries bt709 -color_trc bt709 output.mkv

硬字幕(将字幕烧录到画面中)

使用 FFmpeg
# Hardsub from external subtitle file
ffmpeg -i input.mkv -vf "subtitles=subs.ass" -c:v libx264 -preset slower -crf 20 output.mkv

# Hardsub from embedded subtitle track
ffmpeg -i input.mkv -vf "subtitles=input.mkv:si=0" -c:v libx264 -preset slower -crf 20 output.mkv
使用 mpv(更适合复杂字幕)

mpv 能更准确地处理复杂的 ASS 字幕(样式、位置):

mpv --no-config input.mkv -o output.mkv \
  --audio=no \
  --ovc=libx264 \
  --ovcopts=preset=slower,crf=20,bframes=8

应避免的事项

工具
工具问题
Handbrake设置不可预测,隐藏重要选项
在线转换器画质损失,存在隐私风险
“AI 超分工具”添加虚假细节,导致画面偏离源文件
Windows 内置工具画质差,选项有限
做法
做法不妥之处
不必要的锐化引入伪影,使画面偏离源文件
升采样至更高分辨率不会增加真实细节
多次重新编码画质损失会累积
为追求画质而使用 NVENC硬件编码器优先考虑速度而非画质
帧率插值添加带有伪影的虚假帧

推荐工具

必备工具
工具用途
ffmpeg视频处理的瑞士军刀
MediaInfo检查视频属性和元数据
mpv出色的媒体播放器,支持编码
MKVToolNix用于 MKV 混流操作的 GUI
专用工具
工具用途
Aegisub字幕编辑
HandBrake简单转码(谨慎使用)
yt-dlp下载在线视频

故障排除

视频无法播放
  1. 检查目标设备是否支持该编解码器
  2. 尝试重新封装为其他容器格式
  3. 确认文件未损坏:ffmpeg -v error -i file.mkv -f null -
编码后颜色看起来不正确
  1. 比较颜色元数据:mediainfo input.mkv 与 mediainfo output.mkv
  2. 检查色彩范围(有限 vs. 完整)
  3. 检查色彩矩阵(BT.709 vs. BT.601)
  4. 在 ffmpeg 命令中明确设置颜色参数
文件体积过大
  1. 提高 CRF(例如,20 → 23)
  2. 使用较慢的预设以获得更好的压缩效果
  3. 考虑使用 x265 以提高效率
  4. 检查是否进行了不必要的编码(改用重新封装)
编码耗时过长
  1. 使用更快的预设(但要接受更大的文件)
  2. 检查硬件编码是否适用于你的使用场景
  3. 确保源文件没有被不必要地解码
音频/视频不同步
  1. 首先检查源文件是否存在同步问题
  2. 使用 -async 1 校正音频同步
  3. 尝试重新封装,而不是重新编码

示例

归档蓝光光盘抓取文件
ffmpeg -i input.mkv -c:a copy -c:v libx265 -preset slower -crf 18 \
  -x265-params bframes=8 output.mkv
准备上传到 YouTube
ffmpeg -i input.mkv -c:a aac -b:a 384k -c:v libx264 -preset slower -crf 18 \
  -profile:v high -level 4.2 -pix_fmt yuv420p output.mp4
快速预览/代理文件
ffmpeg -i input.mkv -c:a aac -b:a 128k -c:v libx264 -preset fast -crf 28 \
  -vf scale=640:-2 output.mp4
仅提取音频
# Copy audio stream (no re-encoding)
ffmpeg -i input.mkv -vn -c:a copy output.mka

# Convert to MP3
ffmpeg -i input.mkv -vn -c:a libmp3lame -b:a 320k output.mp3
不重新编码的情况下剪辑
# Trim from 1:00 to 2:30
ffmpeg -i input.mkv -ss 00:01:00 -to 00:02:30 -c copy output.mkv

资源

评论

支持 Markdown