一文快速学会FFmpeg音视频编解码神器的下载安装与使用
好奇漫步
编辑于 2023年05月25日 03:26
收录于文集
共4篇

首先介绍下FFmpeg

FFmpeg 全名是Fast Forward MPEG(Moving Picture Experts Group),是一个集成了各种编解码器的库,也就是一堆程序文件,可以实现图像信息的编码、解码、复用、解复用、流、过滤,也就是从视频采集、视频编码到视频传输,都可以调用FFmpeg这个库中的代码来完成。并且这个库支持跨平台,可以在Windows、Mac OS、Linux、Android、IOS使用。

还有一点要补充的,原来我们常用的视频播放器比如暴风、qq影音、VLC等都是基于FFmpeg开发的,看到这里不明觉厉了吧。

FFmpeg的强大之处在于视频转码时不需要借助外部转码软件(比如Adobe的AE、PR、AME或者格式工厂等),只需要一个命令提示符便可以快速完成视频的编码转码等复杂操作,而且转码速度比常用的软件还要快!

下载

首先来到FFmpeg的官网https://ffmpeg.org,根据你使用的电脑平台进行下载。这里我们下载Windows版本,这里有两个版本,具体选择哪个版本可以参考下面这句话自行决定。这里选择Windows builds by BtbN版本进行下载。

在Windows系统上,Gyan.dev和BtbN都提供了FFmpeg的预编译版本。Gyan.dev通常使用MSVC编译器,而BtbN使用MinGW编译器。因此,Gyan.dev的版本可能会更符合Windows标准,而BtbN的版本可能会更加开放和跨平台。

这时候来到GitHub页面,选择其中的Windows版本下载。这里有两个版本,具体下载哪个版本根据下面这段话自行决定,两者区别如下:

完整版适用于终端用户,因为它包含了所有的可执行文件和静态库,用户可以从命令行调用FFmpeg的工具来进行视频处理; Shared版仅包含共享库和工具,不包含可执行文件和静态库,这使得开发者可以使用FFmpeg的功能实现自己的应用程序或集成FFmpeg到自己的项目中。

这里我们下载完整版(127MB)。

安装并配置环境变量

解压下载好的ffmpeg-master-latest-win64-gpl.zip文件,然后把它放入一个合适的位置,比如C:\Program Files中。

右键桌面的“此电脑”图标,点击属性来到系统信息页面,或者右键任务栏的Windows图标,点击系统。

点击“高级系统设置”。

点击“环境变量”。

点击Path,然后点击“编辑”。

复制ffmpeg\bin所在的地址,注意是bin文件夹的地址,比如我这里是C:\Program Files\ffmpeg-master-latest-win64-gpl\bin。

点击新建,把地址粘贴进去,确认即可。(注:这是win11系统的窗口。)

win10系统这里面没有新建,需要把路径粘贴到Path内容的最后面,路径前用英文分号;隔开。

为什么要配置环境变量呢?因为如果不配置,在cmd窗口输入ffmpeg命令会提示找不到这个命令。

还有个不需要配置环境变量偷懒的方法,就是把解压出来的bin文件夹下的三个exe文件放入C:\Windows\System32文件夹即可,因为这个路径默认已经在环境变量中了(此方法选用)。

测试是否安装成功

win+R输入cmd打开cmd窗口,输入ffmpeg,如图所示则代表安装成功。


使用FFmpeg命令集进行视频的转码操作

ffmpeg的基本使用格式如下所示:

代码块
JavaScript
自动换行
复制代码
ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
复制成功

举例说明,比如把一个mp4视频文件转码为avi,可以使用如下代码:

代码块
JavaScript
自动换行
复制代码
ffmpeg -i test.mp4 -c copy test.avi 
//-i代表输入文件,-c代表输出文件,copy代表和原视频音视频编码保持一致 
//test.mp4在实际运行时候需要指定完整路径
复制成功

实际运行时的画面如图所示:

转码速度很快,秒转,而且这并不是单纯的改个后缀名。转码后输出的文件位置在cmd命令运行所在的位置,如图。

最终两文件对比:

另外我们可以指定转码所用的编码和分辨率等,再复杂一点的代码如下所示:

代码块
JavaScript
自动换行
复制代码
ffmpeg -i test.avi -c:v h264 -c:a aac -r 25 -s 1280x720 -vb 6000k test.mp4 
//-c:v代表指定视频video编码 
//-c:a代表指定音频audio编码 
//-r代表指定视频帧率frame 
//-s代表指定视频分辨率solution 
//-vb代表指定视频码率video bitrate 
//-ab代表指定音频码率audio bitrate(代码中未指定)

//代码整体意思为:将avi转码为视频编码为h264、音频编码为aac、
//帧率为25fps、分辨率为720p、视频码率为6M的mp4文件。
复制成功

注:在视频所在文件夹地址栏中输入cmd按回车,便可以在视频所在位置运行cmd命令提示符,这样生成的文件也会在原视频所在文件夹。

实际运行及转码生成视频文件如图所示:

另外还可以将视频转为音视频分离的两个文件,代码如下:

代码块
JavaScript
自动换行
复制代码
ffmpeg -i test.avi -c:v h264 test.mp4 -c:a aac test.aac
复制成功

还可以将一个较大分辨率的视频转码为不同分辨率的视频,代码如下:

代码块
JavaScript
自动换行
复制代码
ffmpeg -i 4k.avi -c:v h264 -s 1280x720 720p.mp4 -c:v h264 -s 1920x1080 1080p.mp4
复制成功

其他常用命令集

代码块
JavaScript
自动换行
复制代码
ffmpeg -h //获取帮助,输入此命令会看到大量的常用命令集,如下图所示。
复制成功

代码块
JavaScript
自动换行
复制代码
ffmpeg -i video.avi //获取视频的信息
复制成功
代码块
JavaScript
自动换行
复制代码
ffmpeg -f image2 -i image%d.jpg video.mpg 
//将图片序列合成视频 
//此命令会把当前目录下的图片(名字如:Image1.jpg、image2.jpg等) 
//合并成video.mpg
复制成功

代码块
JavaScript
自动换行
复制代码
ffmpeg -i video.mpg image%d.jpg 
//将视频分解成图片序列 
//此命令会生成image1.jpg、image2.jpg… 
//也支持其他图片格式:jpeg、gif、png等
复制成功

下次我们将讲解如何使用FFmpeg来进行在线流媒体视频的下载,敬请期待!


更多教程请看本人主页 头条@好奇漫步,持续更新更多学习教程,保持关注哦~