FFmpeg 全面教程:从安装到高级应用
文章目录
- 一、下载与安装(Windows)
- 二、基础命令详解
- 2.1 视频调整大小
- 2.2 vob视频转MP4(重新编码)
- 2.3 提取音频部分(MP3格式)
- 2.4 视频切割
- 2.5 视频转GIF
- 三、高级应用
- 3.1 视频拼接
- 3.2 添加水印
- 3.3 提取关键帧
- 4. 屏幕录制
- 四、实用技巧
一、下载与安装(Windows)
FFmpeg 是一个开源的音视频处理框架,可以录制、转换和流式传输音视频。它支持几乎所有类型的媒体格式,提供强大的命令行工具和库,被广泛应用于视频处理、直播、转码等领域。点击官网下载基础版本或者完整版本:
下载后解压,将bin文件夹路径加入系统环境变量中:
输入ffmpeg -version
可以看到版本信息表示安装完成:
二、基础命令详解
2.1 视频调整大小
ffmpeg -i input.mp4 -vf "scale=960:540" output.mp4
-vf "scale=960:540"
:视频滤镜设置分辨率- 保持宽高比:
scale=960:-1
(高度自动计算)
2.2 vob视频转MP4(重新编码)
ffmpeg -i input.vob -c:v libx264 -c:a aac -strict experimental output.mp4
-c:v libx264
:使用H.264视频编码-c:a aac
:使用AAC音频编码
2.3 提取音频部分(MP3格式)
ffmpeg -i 机甲1.mp4 -vn -acodec libmp3lame -ab 320k 机甲1.mp3
-vn
:禁用视频流-acodec libmp3lame
:指定MP3编码器-ab 320k
:设置音频比特率
2.4 视频切割
# 切割时间段 (00:00:00 - 00:30:00)
ffmpeg -i input.mp4 -ss 00:00:00 -to 00:30:00 -c copy part1.mp4# 使用-t指定时长 (30分钟)
ffmpeg -i input.mp4 -ss 00:00:00 -t 1800 -c copy part1.mp4
-c copy
:不重新编码,直接复制原始视频和音频流(速度快,无损,但无法剪切精确到帧)。
ffmpeg -i input.mp4 -ss 00:15:30 -t 00:05:00 -c:v libx264 -c:a aac segment.mp4
- 适用于非关键帧位置切割
- 会重新编码,质量略有损失
2.5 视频转GIF
ffmpeg -i 密室6.mp4 -ss 431 -to 442 -vf "fps=10,scale=640:-1" -c:v gif video1.gif
-ss 431
:从431秒开始-to 442
:到442秒结束fps=10
:帧率10帧/秒scale=640:-1
:宽度640px,高度自动计算
# `-loop 0`:无限循环
ffmpeg -i "水果缤纷.mp4" -ss 00:00:20 -to 00:00:28 -vf "fps=10,scale=640:-1" -loop 0 output.gif
如果要优化GIF大小,可以写作:
ffmpeg -i input.mp4 -ss 00:01:00 -t 10 -vf "fps=15,scale=500:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif
-vf
: 视频过滤器链参数,由多个滤镜组成,用逗号 ,
分隔,主要完成以下操作:
-
降低帧率 (
fps=15
)**:将视频帧率从原始值(如 30 FPS)降低到 15 FPS,减少 GIF 的帧数,降低文件体积,同时避免动画过快。 -
调整分辨率 (
scale=500:-1
)**:将视频宽度缩放到 500 像素,高度按原比例自动计算(-1
表示保持宽高比),画面避免过大。 -
高质量缩放算法 (
flags=lanczos
)**:使用 Lanczos 重采样算法 进行缩放。相比默认的缩放算法(如双线性插值),Lanczos 能更好地保留细节,减少图像模糊。 -
生成调色板 (
split[s0][s1];[s0]palettegen[p]
)**:将视频流分成两个副本[s0]
和[s1]
,然后用[s0]
生成颜色调色板[p]
。
通过分析视频颜色分布,创建一个最优的颜色索引表,减少 GIF 的颜色数量(默认 256 色),同时尽量保留色彩丰富度。 -
应用调色板 (
[s1][p]paletteuse
)**:将调色板[p]
应用到视频流[s1]
上。确保生成的 GIF 使用有限的色彩(256 色)但尽可能接近原视频的视觉效果。
最后,推荐一个GIF文件处理网站ezgif,可以对视频进行转GIF进行各种处理,甚至是一帧帧选择要转为GIF的所有帧:
三、高级应用
3.1 视频拼接
# 创建文件列表
echo "file 'clip1.mp4'" > list.txt
echo "file 'clip2.mp4'" >> list.txt# 拼接视频
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4
3.2 添加水印
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=W-w-10:H-h-10" output.mp4
- 在右下角添加水印(距离边缘10px)
3.3 提取关键帧
ffmpeg -i input.mp4 -vf "select='eq(pict_type,I)'" -vsync vfr thumbnails_%03d.jpg
4. 屏幕录制
ffmpeg -f gdigrab -framerate 30 -i desktop -c:v libx264 -preset ultrafast -crf 0 output.mp4
四、实用技巧
- 快速切割:使用
-c copy
避免重新编码,速度极快 - 批量处理:结合批处理脚本或PowerShell自动化任务
- 硬件加速:使用
-hwaccel cuda
或-hwaccel dxva2
加速处理 - 格式探测:使用
ffprobe input.mp4
查看媒体详细信息 - 性能监控:添加
-report
参数生成处理日志
常见问题解决:
- 编码问题:使用
-c:v libx264 -pix_fmt yuv420p
确保兼容性 - 音频同步:尝试
-async 1
参数 - 大文件处理:使用分段处理或流式处理
- 质量优化:调整CRF值(18-28范围,值越小质量越高)
提示:使用
ffmpeg -h full
查看完整帮助文档,或访问 https://ffmpeg.org/ffmpeg.html 获取更多高级用法。