1、安装:
打开https://ffmpeg.zeranoe.com/builds/,该网站中的FFMPEG分为3个版本:Static,Shared,Dev。
前两个版本可以直接在命令行中使用,他们的区别在于:Static里面只有3个应用程序:ffmpeg.exe,ffplay.exe,ffprobe.exe,每个exe的体积都很大,相关的Dll已经被编译到exe里面去了。Shared里面除了3个应用程序:ffmpeg.exe,ffplay.exe,ffprobe.exe之外,还有一些Dll,比如说avcodec-54.dll之类的。Shared里面的exe体积很小,他们在运行的时候,到相应的Dll中调用功能。Dev版本是用于开发的,里面包含了库文件xxx.lib以及头文件xxx.h,这个版本不包含exe文件。
这里下载了static版本,是个zip压缩文件,解压到指定目录,去配置环境变量,
例如FFMPEG位于D:\ffmpeg\bin中。右键“我的电脑”->属性->高级系统设置->高级->环境变量,找到名字为path的变量,在其后追加字符串:D:\ffmpeg\bin;(结尾是有分号的)。设置完一般重启后生效。
可以用ffmpeg -version测试一下:
2、命令简单使用
A、视频格式转换:
ffmpeg -i xxx.mkv -acodec copy -vcodec copy xxx.mp4(mkv格式转换成MP4)
ffmpeg -i xxx.avi -acodec copy -vcodec copy xxx.mp4(avi格式转换成mp4)
ffmpeg -i xxx.mp4 -acodec copy -vodec copy xxx.ts(mp4格式转成ts)
B、提取音频
ffmpeg -i C:\Users\Administrator\Desktop\WeChat_20180918181514.mp4 -acodec copy -vn C:\Users\Administrator\Desktop\1\output.aac
C、提取视频
ffmpeg -i input.mp4 -vcodec copy -an output.mp4
D、视频剪切
比如:从时间为00:00:15开始,截取5秒钟的视频
ffmpeg -ss 00:00:15 -t 00:00:05 -i input.mp4 -vcodec copy -acodec copy output.mp4
E、码率控制
码率控制对于在线视频比较重要。因为在线视频需要考虑其能提供的带宽。
那么,什么是码率?很简单: bitrate = file size / duration
比如一个文件20.8M,时长1分钟,那么,码率就是:
biterate = 20.8M bit/60s = 20.8*1024*1024*8 bit/60s= 2831Kbps
一般音频的码率只有固定几种,比如是128Kbps, 那么,video的就是
video biterate = 2831Kbps -128Kbps = 2703Kbps。
说完背景了。好了,来说ffmpeg如何控制码率。 ffmpg控制码率有3种选择,-minrate -b:v -maxrate
-b:v主要是控制平均码率。 比如一个视频源的码率太高了,有10Mbps,文件太大,想把文件弄小一点,但是又不破坏分辨率。 ffmpeg -i input.mp4 -b:v 2000k output.mp4上面把码率从原码率转成2Mbps码率,这样其实也间接让文件变小了。目测接近一半。
不过,ffmpeg官方wiki比较建议,设置b:v时,同时加上 -bufsize
-bufsize 用于设置码率控制缓冲器的大小,设置的好处是,让整体的码率更趋近于希望的值,减少波动。(简单来说,比如1 2的平均值是1.5, 1.49 1.51 也是1.5, 当然是第二种比较好) ffmpeg -i input.mp4 -b:v 2000k -bufsize 2000k output.mp4
-minrate -maxrate就简单了,在线视频有时候,希望码率波动,不要超过一个阈值,可以设置maxrate。
ffmpeg -i input.mp4 -b:v 2000k -bufsize 2000k -maxrate 2500k output.mp4
F、 视频编码格式转换
一个视频的编码是MPEG4,想用H264编码:
ffmpeg -i input.mp4 -vcodec h264 output.mp4
H264 转换成MPEG4:
ffmpeg -i input.mp4 -vcodec mpeg4 output.mp4
G、只提取视频ES数据
ffmpeg –i input.mp4 –vcodec copy –an –f m4v output.h264
H、 将输入的1920x1080缩小到960x540输出
ffmpeg -i input.mp4 -vf scale=960:540 output.mp4
I、为视频添加logo
ffmpeg -i input.mp4 -i iQIYI_logo.png -filter_complex overlay output.mp4
J、抓取视频的一些帧,存为jpeg图片
ffmpeg.exe -i xxx.mp4 fileLoad\f%05d.png(fileLoad,转化图片后所放位置)
ffmpeg -i input.mp4 -r 1 -q:v 2 -f image2 pic-%03d.jpeg
-r 表示每一秒几帧
-q:v表示存储jpeg的图像质量,一般2是高质量。
ffmpeg -i input.mp4 -ss 00:00:20 -t 10 -r 1 -q:v 2 -f image2 pic-%03d.jpeg
-ss 表示开始时间
-t表示共要多少时间。
K、视频转化成固定帧
ffmpeg.exe -i xxx.mp4 -r 60 rrr.mp4