FFmpeg
开源音视频处理工具集,支持转码、mux/demux、滤镜、抽帧、场景检测等。
#type / resource
#status / evergreen
#media / video
#media / tool
[!info] related notes
- 应用场景: 视频关键帧提取, FFmpeg 镜头检测
- 相关项目: Dify video-craft-agent Workflow
- 所属 MOC: AI MOC
FFmpeg
这是什么
FFmpeg 是开源音视频处理的事实标准工具集。几乎所有的视频播放器、转码服务、流媒体平台底层都依赖它。
核心组件:
ffmpeg:音视频转换、滤镜处理、流媒体推送ffprobe:获取媒体文件的元数据(时长、帧率、分辨率、编码格式)ffplay:简单播放器(开发调试用)
适用平台
Windows、macOS、Linux、Docker。可通过包管理器安装或下载静态构建。
# Windows (winget)
winget install ffmpeg
# macOS
brew install ffmpeg
# Ubuntu/Debian
sudo apt install ffmpeg
核心能力
1. 转码与格式转换
# mp4 转 webm
ffmpeg -i input.mp4 output.webm
# 指定编码器
ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4
2. 获取媒体信息
# 获取时长、帧率、分辨率
ffprobe -v quiet -print_format json -show_format -show_streams input.mp4
3. 抽帧
# 每秒抽 1 帧
ffmpeg -i input.mp4 -vf "fps=1" frames/frame_%03d.jpg
# 按时间点抽单帧
ffmpeg -ss 5.0 -i input.mp4 -frames:v 1 frame.jpg
4. 场景检测
详见 FFmpeg 镜头检测。
ffmpeg -i input.mp4 -vf "select='gt(scene,0.3)',showinfo" -f null - 2> scene.log
5. 滤镜系统
FFmpeg 的 -vf / -filter_complex 支持链式滤镜:
scale:缩放crop:裁剪fps:帧率转换select:条件选择帧showinfo:输出帧信息(含 pts_time)drawtext:叠加文字overlay:画中画
6. 音频处理
# 提取音频
ffmpeg -i input.mp4 -vn output.mp3
# 调节音量
ffmpeg -i input.mp4 -af "volume=0.5" output.mp4
局限
- 纯命令行工具,没有 GUI(复杂操作需要写脚本)
- 参数语法晦涩,复杂滤镜链容易出错
- 场景检测是像素级变化检测,不是 AI 语义理解
- 阈值需要针对不同视频调参
常见用途
- 视频转码和格式适配
- 批量抽帧用于 AI 分析
- 镜头切换点检测
- 视频合成和剪辑(拼接、裁剪、加字幕)
- 直播推流
- 提取音频/字幕