如果你经常需要把素材视频压一压体积、统一编码参数、从视频里抽取关键帧,或者给不同平台导出兼容版本,FFmpeg 基本是绕不开的工具。本文以 macOS 为主,演示如何用 Homebrew 安装与维护 FFmpeg,并整理一套可复用的命令模板(所有命令都可按需替换输入/输出文件名)。
Homebrew:https://brew.sh
FFmpeg 官网:https://ffmpeg.org
Homebrew Formula:https://formulae.brew.sh/formula/ffmpeg
打开 Terminal,执行官方安装命令。建议直接从 Homebrew 官网复制最新命令;本文不重复粘贴安装脚本内容,避免过时。
安装完成后,确认版本与环境是否正常:
brew --version
brew doctor
安装 FFmpeg:
brew install ffmpeg
以后需要升级时:
brew update
brew upgrade ffmpeg
查看编译信息与支持的编码器(排查“为什么这台机器没有某某编码器”很有用):
ffmpeg -version
1)转成兼容性更高的 H.264 + AAC(通用模板)
ffmpeg -i input.mov -c:v libx264 -preset medium -crf 20 -c:a aac -b:a 192k output.mp4
要点:-crf 控制画质(数值越小越清晰但体积更大),-preset 控制速度与压缩效率。
2)只改封装不重编码(非常快,适合“容器不兼容”)
ffmpeg -i input.mp4 -c copy output.mkv
注意:如果源文件编码本身不兼容,-c copy 也解决不了,需要重编码。
3)从视频抽帧(每秒 1 帧)
ffmpeg -i input.mp4 -vf fps=1 frames_%04d.jpg
如果只想抽第 10 秒到第 20 秒区间:
ffmpeg -ss 10 -to 20 -i input.mp4 -vf fps=1 clip_frames_%04d.jpg
4)裁剪一段视频(不重编码/重编码两种方式)
不重编码(更快,但剪切点可能不够精确,且要求关键帧对齐):
ffmpeg -ss 00:00:05 -to 00:00:25 -i input.mp4 -c copy cut.mp4
重编码(更精确,速度更慢):
ffmpeg -ss 00:00:05 -to 00:00:25 -i input.mp4 -c:v libx264 -crf 20 -c:a aac cut_reencode.mp4
当你需要把一个文件夹里的视频统一转成 mp4,可以用 zsh 的循环(macOS 默认 shell 通常是 zsh):
for f in *.mov; do ffmpeg -i "$f" -c:v libx264 -preset medium -crf 22 -c:a aac -b:a 160k "${f%.*}.mp4"; done
小建议:
1)先拿 1 个小文件试跑,确认参数符合预期再批量跑。
2)输出文件名尽量不要覆盖原文件,避免误操作导致回滚困难。
1)报错提示找不到某个编码器
先用 ffmpeg -version 看编译选项,再用 ffmpeg -encoders 列出可用编码器。不同编译版本支持差异是常见原因。
2)音画不同步 / 音量过小
优先确认输入素材本身是否存在异常;必要时可以在重编码时统一采样率与声道。例如:
ffmpeg -i input.mp4 -c:v libx264 -crf 20 -c:a aac -ar 48000 -ac 2 output.mp4
3)想要更快的速度
可以适当调快 -preset(例如 fast/veryfast),或者先用 -c copy 判断是否能只换容器。硬件加速涉及不同设备与驱动差异,建议从官方文档开始逐步验证,避免一上来就堆复杂参数。
把你最常用的 3-5 条命令整理成“命令卡片”,每次只改输入/输出文件名;再配合批处理循环,就能在不写脚本的情况下覆盖大多数日常转码需求。