ffmpeg简介
FFmpeg作为开源音视频处理的“瑞士军刀”,提供跨平台(Windows/Linux/macOS)的安装方案(推荐官方构建版或包管理器),核心命令遵循“ffmpeg [选项] -i 输入 [选项] 输出”的结构,广泛应用于格式转换(MP4/GIF/音频提取)、分辨率调整、视频剪辑、流媒体推流、滤镜处理等场景,并附带关键参数说明(如-crf控质量、-vf加滤镜)与常见问题解决方案,是开发者与多媒体工作者高效处理音视频任务的必备工具集。
一、FFmpeg 简介
FFmpeg被誉为"音视频处理的瑞士军刀",是一个功能强大的开源多媒体处理工具集,支持几乎所有音视频格式的转码、剪辑、合并、提取、流媒体处理等操作。
核心组件:
- ffmpeg:负责音视频转码、剪辑、压缩等核心操作
- ffprobe:查看媒体文件信息
- ffplay:简易播放器,用于快速预览
二、安装指南
Windows 系统
方法一:官方构建版本(推荐)
-
下载
- 访问 https://www.gyan.dev/ffmpeg/builds/
- 选择 ffmpeg-release-full.7z(完整版,含ffprobe、ffplay)
-
解压
-
解压到任意目录,例如:D:\ffmpeg
-
目录结构:
ffmpeg/ └── bin/ ├── ffmpeg.exe ├── ffprobe.exe └── ffplay.exe
-
-
配置环境变量
- 右键"此电脑" → 属性 → 高级系统设置 → 环境变量
- 在"系统变量"中找到"Path",点击"编辑"
- 点击"新建",添加:D:\ffmpeg\bin
- 保存所有更改
-
验证安装
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加速 |
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 软件从业者Hort
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果

