FFMPEG常用命令(一):音视频信息与抽取FFMPEG常用命令(二):视频相关命令FFMPEG常用命令(三):音频相关命令FFMPEG常用命令(四):图片相关命令FFplay常用命令FFprobe常用命令

上一篇文章我们学会了FFmpeg最基本的命令。本篇文章我们来学习FFmpeg视频相关的命令。

准备工作

和上一篇文章一样,我们准备一个Res文件夹,在里面放一个视频文件(video.mp4)和音频文件(audio.mp3)。然后在这个文件夹打开命令行。

java ffmpeg修改分辨率 ffmpeg修改码率_帧率

改变格式

FFmpeg可以转换视频格式,命令如下。3gp是一种移动设备的视频格式。常见的视频格式还有mp4、AVI、RMVB、FLV等。

ffmpeg -i video.mp4 -f 3gp out.3gp

当然还有更多的格式可以转换,查询命令如下。其中的D表示解封装格式,E表示封装格式。

ffmpeg -formats

java ffmpeg修改分辨率 ffmpeg修改码率_java ffmpeg修改分辨率_02

改变码率

视频码率是指单位时间内视频所占用的位数,码率越高,视频越精度越接近原始文件,但体积也越大。FFmpeg也可以转换视频的码率,命令如下。-b:v 的b表示码率,v说明是视频的码率。

ffmpeg -i video.mp4 -b:v 50k out.mp4

左边是原视频,右边是降低码率后的视频。很明显码率下降了,体积和清晰度也就跟着下降了。

java ffmpeg修改分辨率 ffmpeg修改码率_音视频_03

改变尺寸

改变视频尺寸命令如下。-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三个文件。

java ffmpeg修改分辨率 ffmpeg修改码率_帧率_04


打开filelist.txt空白文件,填写合成文件列表,保存。

java ffmpeg修改分辨率 ffmpeg修改码率_码率_05


最后输入命令。注意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合并视频文件的三种方法》