ffmpeg是一个开源的音视频转码工具,它提供了录制、转换以及流化音视频的完整解决方案,可以转码、压制、提取、截取、合并、录屏等。它功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes),也是许多音频和视频格式的标准编码/解码实现。
打开官网地址,进入下载页:
选择Linux版本,点击Linux Static Builds下方选项,打开稳定版的下载详情页面。
在列表中选择适合自己的版本,这里我直接选择最新版 ffmpeg-release-amd64-static.tar.xz - md5,复制下载链接地址,打开终端,使用wget命令下载文件:
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
下载完成后,进入文件的下载路径,可以看到下载完成的文件后缀名为.tar.xz,执行解压命令解压文件:
tar -xvf ffmpeg-release-amd64-static.tar.xz
解压完成后进入解压出来的文件夹ffmpeg-release-amd64-static/:
FFmpeg和FFprobe都在这里,执行一下命令查看是否安装成功:
./ffmpeg
至此,FFmpeg则安装成功了,下面可以进行视频、音频等处理了。
下面的命令查看FFmpeg支持的视频后缀名格式,也称为容器格式:
$ ffmpeg -formats
下面的命令查看FFmpeg支持的编码格式:
$ ffmpeg -codecs
查看视频文件的元信息,比如编码格式和比特率,可以只使用-i参数:
$ ffmpeg -i input.mp4
FFmpeg转换容器格式最简单最常用的命令如下:
$ ffmpeg -i input.xxx output.xxx
例如我们有原视频a.mov想要转成mp4格式并更改文件名为b我们可以使用如下命令:
$ ffmpeg -i a.mov b.mp4
mkv解封。
直接复制音频与视频流到mp4中进行重新封装(此方式适用于flv格式,例如B站下下来的),由于不需要重新编码,此代码的转换速度取决于你电脑的硬盘速度。
$ ffmpeg -i a.mkv -vcodec copy -acodec copy b.mp4
FFmpeg转换编码格式的命令如下,转换编码格式(transcoding)指的是, 将视频文件从一种编码转成另一种编码。比如转成 H.264 编码,一般使用编码器libx264,所以只需指定输出文件的视频编码器即可。
$ ffmpeg -i [input.file] -c:v libx264 output.mp4
下面是转换成H.265编码的写法:
$ ffmpeg -i [input.file] -c:v libx265 output.mp4
调整码率(transrating)指的是,改变编码的比特率,一般用来将视频文件的体积变小。
ffmpeg -i input.mp4 -r 10 -b:a 32k output.mp4 #对它降低fps和音频码率的方法大大压缩文件大小,而清晰度不变。
#或者
ffmpeg -i input.mp4 -vcodec libx264 -crf 22 output.mp4 #将原视频转换成H.264格式并压缩,只压缩码率,其他不变
#再或者
ffmpeg -i input.webm -vcodec libx264 -crf 20 -acodec aac output.mp4 #将YouTube vp9编码转换为h264编码
命令选项介绍
-r 码率
-b:a 音频码率
-vcodec 视频编码
-crf 控制不变码率(量化比例的范围为0 ~ 51,其中0为无损模式,23为缺省值,51可能是最差的,推荐日常使用18-22。)
-acodec 音频编码
视频分辨率可以使用-s来指定,视频比例可以使用-aspect来指定,例如:
ffmpeg -i input.mp4 -s 1280x720 -acodec copy output.mp4
ffmpeg -i input.mp4 -aspect 16:9 output.mp4
#去除视频中的音频(提取视频)
ffmpeg -i in.mp4 -vcodec copy -an out.mp4
#去除视频中的视频(提取音频)
ffmpeg -i in.mp4 -acodec copy -vn out.mp4
添加音轨(muxing)指的是,将外部音频加入视频,比如添加背景音乐或旁白。
$ ffmpeg -i input.aac -i input.mp4 output.mp4
将视频按照弧度制进行旋转,使用-vf rotate=参数,例如:
#将视频旋转90度
ffmpeg -i in.mp4 -vf rotate=PI/2 out.mp4
视频变速使用-filter:v setpts=参数,音频变速使用-filter:a atempo=参数,例如:
#将视频调整为0.5倍速
ffmpeg -i in.mp4 -filter:v setpts=0.5*PTS out.mp4
#音频变速为原先的两倍
ffmpeg -i in.mp3 -filter:a atempo=2.0 out.mp3
从视频中提取图片的命令如下:
ffmpeg -i in.mp4 -r 1 -q:v 2 -f image2 imagename-%d.jpeg
命令选项介绍:
-r:每秒提取的帧数,如上面为每秒1帧,即一张图像
-q:v :图片质量,一般是1到5之间(1 为质量最高)
-f:图片格式,上述为image2
image-%d.jpeg:生成图像的文件名,可以加上完整路径,%d会使文件名按整数编号,如上述生成图像为image-1.jpeg, image-2.jpeg, ...
-t:持续时间,如-t 4表示持续4s
-ss:起始时间,如-ss 01:30:14,从01:30:14开始
-vframes:指定抽取的帧数,如-vframes 120,指定抽取120张
-s:格式大小,如-s 640x360
-y:覆盖,直接使用
裁剪(cutting)指的是,截取原始视频里面的一个片段,输出为一个新视频。可以指定开始时间(start)和持续时间(duration),也可以指定结束时间(end)
$ ffmpeg -ss [start] -i [input] -t [duration] -c copy [output]
$ ffmpeg -ss [start] -i [input] -to [end] -c copy [output]
上面例子中,-c copy表示不改变音频和视频的编码格式,直接拷贝,这样会快很多。
FFmpeg是一个非常厉害的格式转化与压制的软件,虽然没有GUI,但是只要掌握了几个基本的命令就足以完成绝大多数人的使用需求,Windows、macOS、Linux全平台试用。而且由于FFmpeg是一个开源软件,所以你可以根据你的个性化需求对该软件进行定制。同样如果你有更多的使用需求可以去查阅FFmpeg的官方文档选择你所需要的参数。
https://www.ruanyifeng.com/blog/2020/01/ffmpeg.html
https://www.zl-asica.com/2020/ffmpeg/
https://www.cnblogs.com/jisongxie/p/9948845.html
https://www.cnblogs.com/wanghetao/p/3420788.html
https://www.cnblogs.com/wanghetao/p/3420788.html
https://www.jianshu.com/p/2b609afb9800
https://blog.csdn.net/yang725614/article/details/79696756