1 介绍
FFmpeg 是一个开放源代码的自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了 libavcodec ——这是一个用于多个项目中音频和视频的解码器库,以及 libavformat ——一个音频与视频格式转换库。 “FFmpeg”这个单词中的“FF”指的是“Fast Forward”。
2 安装
本文只单独介绍如何在Windows和macOS下安装FFmpeg,暂不讨论在Linux下的情况。 FFmpeg的官网为https://ffmpeg.org/download.html
2.1 Windows
- 首先打开上面的官网下载链接,找到Windows模块下的 Windows builds by BtbN
- 在新打开的 GitHub Release 的页面中看 Assets 部分,这里面倒数第三个 ffmpeg-master-latest-win64-gpl-shared.zip (如红箭头所示)的链接直接点击下载FFmpeg的最新版压缩包。
- 下载下来的压缩包先解压,然后将解压后的文件夹放至你不会随意删掉或改动为止的路径下(如C盘的Program Files但不是必须放到C盘)。
- 复制ffmpeg解压后文件夹内的bin文件夹路径(如下图所示)
- 打开 设置-系统-关于-高级系统设置
- 打开高级系统设置后点开 环境变量 ,找到系统变量中的 Path变量 双击点开。
- 新打开的页面点击右边的 新建 ,粘贴进去在第四步复制的bin文件夹链接
- 添加完后一步一步确定-确定-确定。
- win+R,输入cmd,回车,打开cmd
- 输入FFmpeg并回车测试是否安装成功,显示类似下图即为安装成功
2.2 macOS
-
command+空格打开聚焦搜索,输入terminal并回车打开终端
-
输入下述命令安装homebrew
BASHhomebrew安装过程中可能会需要root权限(管理员权限),届时需要输入你的系统密码,输入时不会显示你输入的内容,输入完成回车即可
-
homebrew安装完成后输入下述命令安装ffmpeg
BASH -
安装完成后输入ffmpeg测试是否安装成功,显示类似下图即为安装成功
2.3 Linux
对于 Ubuntu/Debian 系统可以使用下述命令安装
BASH
对于 RedHat/CentOS 系统可以使用下述命令安装
BASH
对于 Arch Linux 系统可以使用下述命令安装
BASH
3 基础使用
3.1 格式转换
FFmpeg转换格式最简单最常用的命令如下(请注意视频名称内若有空格请用英文状态下的**""将其括起来,若视频名称里本来就有"则要使用英文状态下的''**将其括起来):
BASH
例如我们有原视频a.mov想要转成mp4格式并更改文件名为b我们可以使用如下命令
BASH
mkv解封,直接复制音频与视频流到mp4中进行重新封装(此方式适用于flv格式,例如B站下下来的),由于不需要重新编码,此代码的转换速度取决于你电脑的硬盘速度。
BASH
3.2 视频压缩
FFmpeg压缩视频应使用类似如下格式的命令:
BASH
命令选项介绍 -r 码率 -b:a 音频码率 -vcodec 视频编码 -crf 控制不变码率(量化比例的范围为0 ~ 51,其中0为无损模式,23为缺省值,51可能是最差的,推荐日常使用18-22。) -acodec 音频编码 如果想要在转码压制视频时保持音频不对音频进行处理请在命令行里加入下述命令直接复制音频流到新的视频里可保存原视频同等的音频流。
BASH
3.3 转换视频到gif
FFmpeg转换视频到gif可使用下述命令
BASH
4 进阶使用
4.1 音视频编码转换
-vcodec 可以用来选择你索要使用的编码器(如h264/hevc/mpeg4),例如:
BASH
额外的选项:-s 指定分辨率,-b 指定比特率,-r 指定帧率,-acodec 指定音频编码,-ab 指定音频比特率,-ac 指定声道数,例如:
BASH
转换封装保留编码和其他选项(如mkv或flv解封装后重新封装为mp4),例如:
BASH
4.2 合并视频
我们经常会需要将两个视频合并到一起,可以使用以下命令进行合并:
-
对于 .ts 格式的视频文件,可以使用以下命令:
BASH -
对于 .mp4(或其他)格式的视频文件,麻烦一些,遵循下述步骤:
-
首先创建一个文本文件,命名为filelist.txt,内容如下:
TXT -
然后使用以下命令进行合并:
BASH
-
4.3 更改视频分辨率或比例
视频分辨率可以使用-s来指定,视频比例可以使用-aspect来指定,例如:
BASH
4.4 剪辑视频和裁剪视频画面
一些基础的剪辑视频和画面裁剪也可以通过FFmpeg实现 -ss表示开始的时间,-t表示时间的长度 例如:
BASH
4.5 提取(去除)视频中的视频(或音频)
-an 为去除音频,-vn 为去除视频,例如:
BASH
4.6 合并音视频
本操作等同于将纯视频(无音频)的视频里的视频流和单独的音频文件里的音频流进行合并,例如:
BASH
4.7 旋转视频
将视频按照弧度制进行旋转,使用-vf rotate=参数,例如:
BASH
4.8 视频(音频)变速
视频变速使用-filter:v setpts=参数,音频变速使用-filter:a atempo=参数,例如:
BASH
5 总结
FFmpeg是一个非常厉害的格式转化与压制的软件,虽然没有GUI,但是只要掌握了几个基本的命令就足以完成绝大多数人的使用需求,Windows、macOS、Linux全平台试用。而且由于FFmpeg是一个开源软件,所以你可以根据你的个性化需求对该软件进行定制。同样如果你有更多的使用需求可以去查阅FFmpeg的官方文档选择你所需要的参数。如果对本文中有任何建议或者问题欢迎在下方评论区留言~