ffmpeg 常用命令

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

你可能感兴趣的:(ffmpeg 常用命令)