FFmpeg的安装与基础使用教程
介绍
FFmpeg 是一个开放源代码的自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了libavcodec——这是一个用于多个项目中音频和视频的解码器库,以及libavformat——一个音频与视频格式转换库。 “FFmpeg”这个单词中的“FF”指的是“Fast Forward”。
安装
本文只单独介绍如何在Windows和macOS下安装FFmpeg,暂不讨论在Linux下的情况。
FFmpeg的官网为https://ffmpeg.org/download.html
Windows
- 首先打开上面的官网下载链接,找到Windows模块下的Windows builds from gyan.dev
- 在新打开的gyan.dev的页面中找到Release部分,Links里第一个full(如红箭头所示)的链接直接点击下载FFmpeg的最新版压缩包。
- 下载下来的7z安装包先解压,然后将解压后的文件夹放至你不会随意删掉或改动为止的路径下(如C盘的Program Files但不是必须放到C盘)。
- 复制ffmpeg解压后文件夹内的bin文件夹路径(如下图所示)
- 打开设置-系统-关于-高级系统设置
- 打开高级系统设置后点开环境变量,找到系统变量中的Path变量双击点开。
- 新打开的页面点击右边的新建,粘贴进去在第四步复制的bin文件夹链接
- 添加完后一步一步确定-确定-确定。
- win+R,输入cmd,回车,打开cmd
- 输入FFmpeg并回车测试是否安装成功,显示类似下图即为安装成功
macOS
- command+空格打开聚焦搜索,输入terminal并回车打开终端
- 输入下述命令安装homebrew
1 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" |
homebrew安装过程中可能会需要root权限(管理员权限),届时需要输入你的系统密码,输入时不会显示你输入的内容,输入完成回车即可。3. homebrew安装完成后输入下述命令安装ffmpeg
1 | brew install ffmpeg |
- 安装完成后输入ffmpeg测试是否安装成功,显示类似下图即为安装成功
基础使用
格式转换
FFmpeg转换格式最简单最常用的命令如下:
1 | ffmpeg -i input.xxx output.xxx |
例如我们有原视频a.mov想要转成mp4格式并更改文件名为b我们可以使用如下命令
1 | ffmpeg -i a.mov b.mp4 |
mkv解封,直接复制音频与视频流到mp4中进行重新封装(此方式适用于flv格式,例如B站下下来的),由于不需要重新编码,此代码的转换速度取决于你电脑的硬盘速度。
1 | ffmpeg -i a.mkv -vcodec copy -acodec copy b.mp4 |
视频压缩
FFmpeg压缩视频应使用类似如下格式的命令:
1 | ffmpeg -i input.mp4 -r 10 -b:a 32k output.mp4 #对它降低fps和音频码率的方法大大压缩文件大小,而清晰度不变。 |
命令选项介绍
-r 码率
-b:a 音频码率
-vcodec 视频编码
-crf 控制不变码率(量化比例的范围为0 ~ 51,其中0为无损模式,23为缺省值,51可能是最差的,推荐日常使用18-22。)
-acodec 音频编码
如果想要在转码压制视频时保持音频不对音频进行处理请在命令行里加入下述命令直接复制音频流到新的视频里可保存原视频同等的音频流。
1 | -acodec copy |
转换视频到gif
FFmpeg转换视频到gif可使用下述命令
1 | #把视频的前 30 帧转换成一个 Gif |
进阶使用
音视频编码转换
-vcodec 可以用来选择你索要使用的编码器(如h264/hevc/mpeg4),例如:
1 | ffmpeg -i in.mp4 -vcodec h264 out.mp4 |
额外的选项:-s 指定分辨率,-b 指定比特率,-r 指定帧率,-acodec 指定音频编码,-ab 指定音频比特率,-ac 指定声道数,例如:
1 | ffmpeg -i in.mp4 -s 1920x1080 -b 200k -vcodec h264 -r 60 -acodec libfaac -ab 48k -ac 2 out.mp4 |
转换封装保留编码和其他选项(如mkv或flv解封装后重新封装为mp4),例如:
1 | ffmpeg -i in.mkv -vcodec copy -acodec copy out.mp4 |
合并视频
我们经常会需要将两个视频合并到一起,可以使用以下命令进行合并
1 | ffmpeg -i "concat:1.ts|2.ts" -acodec copy -vcodec copy -absf aac_adtstoasc output.mp4 |
更改视频分辨率或比例
视频分辨率可以使用-s来指定,视频比例可以使用-aspect来指定,例如:
1 | ffmpeg -i input.mp4 -s 1280x720 -acodec copy output.mp4 |
剪辑视频和裁剪视频画面
一些基础的剪辑视频和画面裁剪也可以通过FFmpeg实现
-ss表示开始的时间,-t表示时间的长度 例如:
1 | #从30s开始截取10秒的视频并封装进h264,aac编码的out.mp4里 |
提取(去除)视频中的视频(或音频)
-an 为去除音频,-vn 为去除视频,例如:
1 | #去除视频中的音频(提取视频) |
合并音视频
本操作等同于将纯视频(无音频)的视频里的视频流和单独的音频文件里的音频流进行合并,例如:
1 | ffmpeg –i in.mp4 –i in.mp3 –vcodec copy –acodec copy out.mp4 |
旋转视频
将视频按照弧度制进行旋转,使用-vf rotate=参数,例如:
1 | #将视频旋转90度 |
视频(音频)变速
视频变速使用-filter:v setpts=参数,音频变速使用-filter:a atempo=参数,例如:
1 | #将视频调整为0.5倍速 |
总结
FFmpeg是一个非常厉害的格式转化与压制的软件,虽然没有GUI,但是只要掌握了几个基本的命令就足以完成绝大多数人的使用需求,Windows、macOS、Linux全平台试用。而且由于FFmpeg是一个开源软件,所以你可以根据你的个性化需求对该软件进行定制。同样如果你有更多的使用需求可以去查阅FFmpeg的官方文档选择你所需要的参数。如果对本文中有任何建议或者问题欢迎在下方评论区留言~