个人使用感觉
- 免费
- 转换效率特别高,速度特别快
- 功能强大,大部分我需要的功能都能满足
- 支持的视屏格式多
- 用的命令行,所以需要一点写代码技术能力
- 尽量不要中文,容易出问题,我遇到过导致路径找不到
ps. 吐槽好多大厂软件,要么慢的要死,要么全是收费,要么需求功能找不到
下载和安装部署
下载
下载ffmpeg,可用多种方式,我这里是windows的,简单点,直接下载
百度网盘:ffmpeg-2025-08-14-git-cdbb5f1b93-full_build.7z
环境部署
步骤 1:打开命令行终端
你可以选择以下任意一种终端:
•Windows 自带的 CMD(命令提示符)
•按下 Win + R组合键,输入 cmd,然后按回车;
•Windows PowerShell
•按下 Win + X,选择 "Windows PowerShell" 或 "终端 (Windows Terminal)";
•Windows Terminal(推荐,功能更强大)
•如果你安装了 Windows Terminal(微软商店可免费下载),可以直接打开它;
推荐使用 Windows Terminal 或 PowerShell,界面更友好,支持多标签、更好的字体和颜色。
步骤 2:进入 FFmpeg 所在的目录(重要!)
FFmpeg 的可执行文件(ffmpeg.exe、ffplay.exe、ffprobe.exe)通常在你解压后的文件夹里的 bin目录下,比如:
D:\Tools\ffmpeg\bin\ffmpeg.exe
为了能在命令行里直接输入 ffmpeg来运行它,你有 两种方法:
方法 A:临时进入 FFmpeg 的 bin 目录(推荐新手先尝试)
1.在命令行中,使用 cd命令进入你解压 FFmpeg 的 bin目录。
比如,如果你的 FFmpeg 解压到了 D:\Tools\ffmpeg\bin,就输入:
cd /d D:\Tools\ffmpeg\bin
说明:
•cd是"change directory"(切换目录)的命令;
•/d表示允许切换到不同盘符(比如你当前在 C 盘,要进入 D 盘的目录);
2.进入该目录后,你就可以直接输入 ffmpeg相关命令了。
方法 B:配置环境变量(推荐,一劳永逸)
如果你希望 在任何文件夹下都能直接输入 ffmpeg命令运行(就像输入 notepad打开记事本那样方便),你需要把 FFmpeg 的 bin目录添加到 Windows 的系统环境变量 PATH中。
配置方法如下:
1.右键点击"此电脑"或"我的电脑",选择"属性";
2.点击左侧的 "高级系统设置";
3.在弹出的窗口中点击 "环境变量";
4.在 "系统变量" 列表中找到 Path,选中它,然后点击 "编辑";
5.点击 "新建",然后输入你 FFmpeg 的 bin目录路径,比如:
D:\Tools\ffmpeg\bin
6.点击"确定"保存所有窗口;
7.重新打开 CMD 或 PowerShell 窗口(重要!之前的窗口不会自动更新环境变量),然后输入:
ffmpeg -version
如果你看到类似下面的信息,说明配置成功,FFmpeg 已经可以全局使用了:
ffmpeg version N-xxxxxx ...
built with gcc ...
configuration: ...
libavutil ...
...
个人常用的功能和代码举例
只要你正确进入了 FFmpeg 的目录(或配置了环境变量),就可以在命令行中输入各种 FFmpeg 命令了。
我遇到了问题,视频因为264问题无法网页播放,通过下面代码进行转化
// 命令
ffmpeg -i 输入视频文件.mp4 -c:v libx264 -c:a aac 输出视频文件.mp4
// 举例子:
ffmpeg -i U:\190-QiXiangWuPing\output_video\15-15-11.mp4 -c:v libx264 -c:a aac U:\190-QiXiangWuPing\output_video\15-15-11-change-ffmpeg.mp4
🎯 常见用途举例:
✅ 示例 1:查看 FFmpeg 版本(测试是否可用)
ffmpeg -version
这会输出 FFmpeg 的版本信息、编译配置等,如果成功显示,说明 FFmpeg 可以正常运行!
✅ 示例 2:将一个视频文件转换为另一种格式(比如 MP4 转 MOV)
假设你有一个视频文件叫 input.mp4,想转为 output.mov,可以运行:
ffmpeg -i input.mp4 output.mov
•-i input.mp4:表示输入文件是 input.mp4
•output.mov:表示输出文件名
📌 注意:转换前请确保 input.mp4文件和 ffmpeg.exe在同一个目录,或者在命令行中写清楚它的完整路径,比如:
ffmpeg -i C:\Users\你名字\Videos\input.mp4 C:\Users\你名字\Videos\output.mov
✅ 示例 3:提取视频中的音频
ffmpeg -i input.mp4 -vn -acodec copy output.aac
•-vn:表示不处理视频流(只提取音频)
•-acodec copy:表示音频流直接复制,不重新编码(速度快,无损)
•output.aac:输出的音频文件
✅ 示例 4:压缩视频(降低码率,减小文件大小)
ffmpeg -i input.mp4 -vcodec libx264 -crf 28 -preset fast output_compressed.mp4
•-crf 28:控制视频质量(数值越大压缩率越高,画质越低;一般 18~28 是常用范围,值越小画质越好)
•-preset fast:编码速度和压缩率的平衡(可选:ultrafast, superfast, veryfast, faster, fast, medium, slow...)
✅ 示例 5:截取部分视频
// 截取视频1分钟到8分钟,重命名为"飞行视频-飞行画面.mp4"
ffmpeg -i D:\_use_one\飞行视频-20250805_155317.mp4 -ss 00:01:00 -to 00:08:00 -c copy D:\_use_one\飞行视频-飞行画面.mp4
// 截取视频8分钟以后的视频,重命名为"飞行视频-飞行画面.mp4"
ffmpeg -i D:\_use_one\video.mp4 -ss 00:08:00 -c copy D:\飞行视频-8分钟以后的视频.mp4
// 截取前3分钟的视屏
ffmpeg -i D:\one.mp4 -t 00:03:00 -c copy D:\飞行视频-前3分钟.mp4
//最后3分钟
ffmpeg -sseof -00:03:00 -i D:\one.mp4 -c copy D:\飞行视频-最后3分钟.mp4
//截取:前1分钟加上2-3分钟加上4-5分钟加上9-10分钟以及11分钟以后
✅ 示例 6:合成视频
视频前后拼接
// 使用 concat 分离器(推荐):
// 首先创建 inputs.txt文件:
file 'video1.mp4'
file 'video2.mp4'
file 'video3.mp4'
然后执行:
ffmpeg -f concat -safe 0 -i inputs.txt -c copy output_concat.mp4
// 使用 filter_complex concat:
ffmpeg -i video1.mp4 -i video2.mp4 -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0]concat=n=2:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" output_concat.mp4
画面拼接
// 垂直拼接(上下排列):
ffmpeg -i video1.mp4 -i video2.mp4 -filter_complex "[0:v][1:v]vstack=inputs=2[v];[0:a][1:a]amerge=inputs=2[a]" -map "[v]" -map "[a]" -c:v libx264 -c:a aac output_stacked.mp4
// 水平拼接(左右排列):
ffmpeg -i video1.mp4 -i video2.mp4 -filter_complex "[0:v][1:v]hstack=inputs=2[v];[0:a][1:a]amerge=inputs=2[a]" -map "[v]" -map "[a]" -c:v libx264 -c:a aac output_sidebyside.mp4
✅ 示例 7:取画面的一部分
需求:如图所示,我需要截取画面中心的一部分,周围的都不要

先查看视频本身分辨率1920*1080,然后看画面需要的比例,通过自己计算,上下左右都裁掉部分
ffmpeg -i input.mp4 -vf "crop=w=1504:h=846:x=178:y=117" -c:a copy output.mp4
参数含义:
w=1504:裁剪宽度(换算后的像素)
h=846:裁剪高度(按比例计算)
x=178:裁剪起始 X 坐标(换算后的像素)
y=117:裁剪起始 Y 坐标(居中裁剪)
这样得到的视频分辨率就是 1504 × 846,比例依然是 16:9
如果想输出回 1920×1080(补齐黑边)
ffmpeg -i input.mp4 -vf "crop=w=1504:h=846:x=178:y=117, scale=1920:1080" -c:a copy output_1080.mp4