FFMPEG常用命令(一):音视频信息与抽取FFMPEG常用命令(二):视频相关命令FFMPEG常用命令(三):音频相关命令FFMPEG常用命令(四):图片相关命令FFplay常用命令FFprobe常用命令
上一篇文章我们学会了FFmpeg最基本的命令。本篇文章我们来学习FFmpeg视频相关的命令。
准备工作
和上一篇文章一样,我们准备一个Res文件夹,在里面放一个视频文件(video.mp4)和音频文件(audio.mp3)。然后在这个文件夹打开命令行。
改变格式
FFmpeg可以转换视频格式,命令如下。3gp是一种移动设备的视频格式。常见的视频格式还有mp4、AVI、RMVB、FLV等。
ffmpeg -i video.mp4 -f 3gp out.3gp
当然还有更多的格式可以转换,查询命令如下。其中的D表示解封装格式,E表示封装格式。
ffmpeg -formats
改变码率
视频码率是指单位时间内视频所占用的位数,码率越高,视频越精度越接近原始文件,但体积也越大。FFmpeg也可以转换视频的码率,命令如下。-b:v 的b表示码率,v说明是视频的码率。
ffmpeg -i video.mp4 -b:v 50k out.mp4
左边是原视频,右边是降低码率后的视频。很明显码率下降了,体积和清晰度也就跟着下降了。
改变尺寸
改变视频尺寸命令如下。-s 用于设置尺寸:长x宽。若不是原来的长宽比例,视频会被拉伸。
ffmpeg -i video.mp4 -s 100x200 out.mp4
改变帧率
视频帧率是指每秒切换画面的频率,肉眼能识别的最小帧率在16左右。帧率太低,视频看起来就有卡顿的感觉。帧率太高,意味着每秒要切换更多的画面,体积也会更大。改变帧率的命令如下。-r 用于设置帧率,下面这个例子把帧率降得非常低,这样就能看出卡顿的效果了。
ffmpeg -i video.mp4 -r 5 out.mp4
画面旋转与翻转
FFmpeg可以让视频旋转或翻转。-vf 设置旋转翻转,注意输入参数是字符串。
参数 | 说明 |
“transpose=0” | 逆时针旋转90°后再水平翻转 |
“transpose=1” | 顺时针旋转90° |
“transpose=2” | 逆时针旋转90° |
“transpose=3” | 顺时针旋转90°后再水平翻转 |
ffmpeg -i video.mp4 -vf "transpose=0" out.mp4
翻转命令如下。
参数 | 说明 |
hflip | 水平翻转 |
vflip | 竖直翻转 |
ffmpeg -i video.mp4 -vf hflip out.mp4
视频片段截取
视频截取命令如下,-ss表示开始时间(时:分:秒),-t表示截取时长(时:分:秒)。
ffmpeg -i video.mp4 -ss 0:0:10 -t 0:0:5 out.mp4
也可以像下面这么写,这种方式使用的单位是秒。
ffmpeg -i video.mp4 -ss 10 -t 5 out.mp4
视频合并
首先用FFmpeg复制两个视频。
ffmpeg -i video.mp4 v1.mp4
ffmpeg -i video.mp4 v2.mp4
接着再创建一个filelist.txt文件,此时的就有了v1.mp4、v2.mp4、filelist.txt三个文件。
打开filelist.txt空白文件,填写合成文件列表,保存。
最后输入命令。注意v1.mp4、v2.mp4、filelist.txt要在同一个文件夹下,而且 -i filelist.txt 不能放在 -f concat 前面,否则FFmpeg会提示无法识别txt文件。
ffmpeg -f concat -i filelist.txt out.mp4
练习
最后,我们来做一个综合的练习。
要求如下:
1.输入文件为video.mp4
2.水平翻转
3.截取开始时间为第10秒,截取时长为20秒
4.帧率为29.97
5.码率为300k
6.尺寸为320x240
7.输出格式为flv
8.输出文件为result.flv
参考命令如下。
ffmpeg -i video.mp4 -vf hflip -ss 0:0:10 -t 0:0:20 -r 29.97 -b:v 300k -s 320x240 -f flv result.flv
最后
本篇文章主要讲述了FFmpeg视频相关的命令。下一篇我们来学习FFmpeg音频的相关命令。
参考文章
《FFmpeg常用基本命令行》《FFmpeg使用手册 - FFmpeg 的常用命令》《ffmpeg实例,比特率码率(-b)、帧率(-r)和文件大小(-fs)相关操作》《使用ffmpeg合并视频文件的三种方法》