6月2日 00:01

FFmpeg 是什么?能做什么?核心组件和常用命令入门

FFmpeg 是音视频领域的瑞士军刀——转码、剪辑、录屏、推流、截图、质量分析,一条命令搞定。它不是带界面的软件,而是命令行工具集,所有操作都在终端完成。OBS、VLC、YouTube 后台都用到了 FFmpeg。

FFmpeg 能做什么

  • 转码:AVI 转 MP4、H.264 转 H.265、4K 降 1080p
  • 剪辑:截取视频片段、合并多个视频、去掉静音段
  • 录屏:录制屏幕和摄像头(macOS/Linux/Windows)
  • 推流:RTMP 直播推流、生成 HLS 流媒体
  • 截图:截取视频帧、批量生成缩略图
  • 分析:用 ffprobe 查看视频信息、用 PSNR/SSIM 评估画质

核心组件

FFmpeg 项目包含一组命令行工具和底层库:

工具用途
ffmpeg转码、剪辑、推流(最常用)
ffprobe查看音视频文件信息(不转码,只分析)
ffplay简易播放器(调试用)

底层库(开发者在自己的程序中调用):

功能
libavformat处理封装格式(MP4、MKV、FLV...)
libavcodec编解码(H.264、AAC、VP9...)
libavutil通用工具函数
libswscale图像缩放和色彩空间转换
libswresample音频重采样

日常只用 ffmpegffprobe 两个命令。库是给开发者写程序用的,普通用户不用管。

最常用的 5 条命令

1. 格式转换

bash
ffmpeg -i input.avi -c:v libx264 -c:a aac output.mp4

2. 视频剪辑

bash
ffmpeg -ss 00:01:00 -i input.mp4 -t 30 -c copy output.mp4

从 1 分钟处截取 30 秒,-c copy 不重编码,秒级完成。

3. 视频截图

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

截取第 5 秒的一帧。

4. 查看视频信息

bash
ffprobe -v quiet -print_format json -show_format -show_streams input.mp4

输出分辨率、码率、时长、编码格式等所有信息,JSON 格式方便脚本解析。

5. 压缩视频

bash
ffmpeg -i input.mp4 -c:v libx264 -crf 28 -preset slow output.mp4

CRF 28 比默认的 23 压得更狠,-preset slow 用更多编码时间换取更小的文件。

安装

bash
# macOS brew install ffmpeg # Ubuntu/Debian sudo apt install ffmpeg # Windows # 从 ffmpeg.org 下载,解压后把 bin 目录加到 PATH

安装后跑 ffmpeg -version 确认可用。注意某些发行版的 FFmpeg 可能缺少某些编码器(如 libx265),需要从第三方源安装或自行编译。

命令语法模式

FFmpeg 命令的通用结构:

bash
ffmpeg [全局选项] [输入选项] -i 输入文件 [输出选项] 输出文件

关键概念:选项的位置很重要。-ss 放在 -i 前面是快速跳转(不精确),放在后面是精确跳转(慢)。-c:v-c:a 是输出选项,必须放在输出文件前面。

标签:FFmpeg