FFmpeg作为开源音视频处理的“瑞士军刀”,提供跨平台(Windows/Linux/macOS)的安装方案(推荐官方构建版或包管理器),核心命令遵循“ffmpeg [选项] -i 输入 [选项] 输出”的结构,广泛应用于格式转换(MP4/GIF/音频提取)、分辨率调整、视频剪辑、流媒体推流、滤镜处理等场景,并附带关键参数说明(如-crf控质量、-vf加滤镜)与常见问题解决方案,是开发者与多媒体工作者高效处理音视频任务的必备工具集。

一、FFmpeg 简介

FFmpeg被誉为"音视频处理的瑞士军刀",是一个功能强大的开源多媒体处理工具集,支持几乎所有音视频格式的转码、剪辑、合并、提取、流媒体处理等操作。

核心组件:

  • ffmpeg:负责音视频转码、剪辑、压缩等核心操作
  • ffprobe:查看媒体文件信息
  • ffplay:简易播放器,用于快速预览

二、安装指南

Windows 系统

方法一:官方构建版本(推荐)

  1. 下载

  2. 解压

    • 解压到任意目录,例如:D:\ffmpeg

    • 目录结构:

      ffmpeg/
      └── bin/
          ├── ffmpeg.exe
          ├── ffprobe.exe
          └── ffplay.exe
      
  3. 配置环境变量

    • 右键"此电脑" → 属性 → 高级系统设置 → 环境变量
    • 在"系统变量"中找到"Path",点击"编辑"
    • 点击"新建",添加:D:\ffmpeg\bin
    • 保存所有更改
  4. 验证安装

    ffmpeg -version
    

方法二:使用包管理器(Chocolatey)

# 安装Chocolatey(如未安装)
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

# 安装FFmpeg
choco install ffmpeg

Linux 系统(Ubuntu/Debian)

方法一:包管理器安装(推荐)

sudo apt update
sudo apt install ffmpeg

方法二:源码编译

# 安装依赖
sudo apt install build-essential yasm cmake libtool libc6 libc6-dev unzip wget

# 下载源码
wget https://ffmpeg.org/releases/ffmpeg-6.1.tar.bz2
tar xjf ffmpeg-6.1.tar.bz2
cd ffmpeg-6.1

# 配置和编译
./configure --enable-gpl --enable-nonfree
make -j$(nproc)
sudo make install

macOS 系统

使用Homebrew安装(推荐)

# 安装Homebrew(如未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 安装FFmpeg
brew install ffmpeg

三、基础命令结构

FFmpeg命令遵循统一格式:

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

四、常用命令整理

1. 基础操作

查看视频信息

ffmpeg -i video.mp4

验证安装

ffmpeg -version

2. 格式转换

MP4转GIF

ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1" output.gif

AVI转MP4(H.264+AAC)

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

MP4转MKV

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

转换为H.265编码(HEVC)

ffmpeg -i input.mp4 -c:v libx265 -crf 23 -c:a copy output.mp4

3. 音频处理

从视频中提取音频(MP4→MP3)

ffmpeg -i input.mp4 -vn -acodec libmp3lame output.mp3

提取音频并指定参数

ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192k -f mp3 sound.mp3

WAV转FLAC(无损)

ffmpeg -i input.wav -c:a flac -sample_fmt s16 output.flac

声道转换

# 单声道转双声道(复制左声道到右声道)
ffmpeg -i input.mp4 -af "pan=stereo|c0=c0|c1=c0" -c:v copy output.mp4

# 转换为单声道
ffmpeg -i input.mp4 -ac 1 output.mp4

4. 视频处理

调整分辨率(1080p→480p)

ffmpeg -i input.mp4 -vf scale=854:480 output.mp4

视频压缩(CRF模式)

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 output.mp4

截取视频片段(00:01:30到00:02:30)

ffmpeg -i input.mp4 -ss 00:01:30 -to 00:02:30 -c copy clip.mp4

视频截图

ffmpeg -i video.mp4 -ss 00:01:30 -vframes 1 screenshot.jpg

5. 流媒体处理

RTMP推流

ffmpeg -re -i input.mp4 -c:v libx264 -preset fast -f flv rtmp://server/live/streamkey

HLS分片

ffmpeg -i input.mp4 -profile:v baseline -start_number 0 -hls_time 10 -hls_list_size 0 -f hls playlist.m3u8

6. 滤镜系统

基础语法

ffmpeg -i input.mp4 -vf "滤镜1=参数1:参数2,滤镜2" output.mp4

常用滤镜示例

# 添加水印
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4

# 调整亮度和对比度
ffmpeg -i input.mp4 -vf "eq=brightness=0.05:contrast=1.2" output.mp4

# 旋转视频
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4  # 顺时针旋转90度

7. 其他实用命令

图片序列合成视频

ffmpeg -f image2 -i image%d.jpg video.mpg

视频分解成图片序列

ffmpeg -i video.mpg image%d.jpg

为视频重新编码以适合在iPhone上播放

ffmpeg -i source_video.avi -acodec aac -ab 128k -vcodec mpeg4 -b 1200k -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x180 -title X final_video.mp4

五、常见参数说明

参数说明
-i指定输入文件
-c:v视频编码器(如libx264、h264_nvenc)
-c:a音频编码器(如aac、libfdk_aac)
-crf质量控制(18-28,值越小质量越高)
-vf视频滤镜
-af音频滤镜
-ss开始时间(格式:HH:MM:SS)
-to结束时间(格式:HH:MM:SS)
-s分辨率(如1280x720)
-b:v视频码率
-b:a音频码率
-vn不处理视频流
-an不处理音频流
-preset编码速度/压缩率平衡(ultrafast到veryslow)

六、常见问题排查

问题原因解决办法
'ffmpeg' 不是内部或外部命令环境变量未配置或路径错误检查Path是否包含安装路径,重启CMD测试
转码后无声音音频流未保留添加参数 -c:a copy
处理速度慢默认使用CPU尝试添加 -preset fast 或使用GPU加速