赞
踩
视频帧率:(Frame rate)是用于测量显示帧数的量度。所谓的测量单位为每秒显示帧数(Frames per Second,简:FPS)或“赫兹”(Hz)。此词多用于影视制作和电子游戏。
由于人类眼睛的特殊生理结构,如果所看画面显示的速率在29.97时候,就会认为是连贯的,所以基本上视频的帧率都处于30-60之间,帧率越大,视频质量越高,所占存储空间越大。帧率超过60之后人眼感觉不到有任何差别,所以基本帧率最高一般不会超过60。
改变帧率帧率为30
**使用-r指定帧率**
ffmpeg -i input.avi -r 30 output.mp4
码率: 也叫做比特率或数据速率,它指定每个时间单位处理的比特数,在ffmpeg中,码率以每秒比特数表示。码率决定使用多少位存储1秒内编码的流数据。
设置码率:
**使用-b 指定码率**
ffmpeg -i film.avi -b 1.5M film.mp4
**文件大小:**音频流和视频流文件大小的总和。
设置文件大小:
**使用-fs设置输出文件大小的最大值,最小单位为byte**
ffmpeg -i input.avi -fs 10MB output.mp4
视频流文件大小计算规则:
视频码率×视频时长/8 //以byte为单位
压缩的音频流计算规则:
音频码率×视频时长/8
调整视频分辨率,主要是改变视频的宽和高。
使用具体分辨率设置:
**使用-s指令设置分辨率**
ffmpeg -i input_file -s 320×240 out_file // 宽×高
使用ffmpeg默认分辨率设置:
ffmpeg -i input.avi -s vga output.avi
默认分辨率对应名称如下:
sqcif 128×96
qqvga 160×120
qcif 176×144
cga 320×200
qvga 320×240
cif 352×288
ega 640×350
vga 640×480
4cif 576×704
svga 800×600
另外使用scale filter 也可以替代-s来改变视频分辨率大小:
**-s 与 -vf scale 可以实现相同效果**
ffmpeg -i input.mp4 -s 320×240 output.mp4
ffmpeg -i input.mp4 -vf scale=320:240 output.mp4
裁剪视频,即在视频的视区内选择一个矩形块进行裁剪,裁剪完成后矩形区块外的视频画面被裁剪掉,不再存在当前视频画面中。
裁剪视频需要指定4个参数,分别是宽,高,坐标x,坐标y。
原视频的参数 iw-输入视频的宽度,ih输入视频的高度。
ffmpeg -i input -vf crop=iw/3:ih:0:0 //按比例裁剪宽为原视图的三分之一,高不变,坐标点为左上角(0,0)处 这个位置为左边的三分之一
ffmpeg -i input -vf crop=iw/3:ih:iw/3:0 //宽为三分之一,高不变,坐标为(总宽度的三分之一,0) 这个位置即为中间的三分之一
ffmpeg -i input -vf crop=iw/3:ih:iw/3*2:0 //同理可推断出该区域为右边的三分之一
其中裁剪点的坐标x,y可省,默认值为
xdefault=(input width - output width)/2
ydefault= ( input height-output height) /2
即默认裁剪大小为你输入的宽高矩阵,但是通过裁剪坐标的平移,将裁剪的矩形块的位置移到原视频的中心区域。
裁剪中间的一半为:
ffmpeg -i input.avi -vf crop=iw/2:ih/2 output.avi
填充视频
在视频中添加一个额外的区域来添加额外的内容。
ffmpeg -i input.avi -vf pad=800:400:x:y:color output.avi
参数规则:iw:ih:x:y:coolor
iw 原图宽度
ih 原图高度
x 添加区域x
y:添加区域y
即所添加的区域以坐标原点(0.0)和坐标(0,y),(x,y),(y,0)所围成的区块。原视频的原点被移到(x,y)坐标点。然后视频上下左右均以前面所围城的区块做延申。
将4:3视频填充为16:9的视频,此时需要保持高度不变,宽度=高度×16/9,x值输入视频帧水平偏移量,x=(ow-input)/2
ffmpeg -i input -vf pad=ih*16/9:ih:(ow-iw)/2:0:color output
将16:9视频转换成4:3时,需要保持宽度不变,高等于宽×3/4
ffmpeg -i input -vf pad=iw:iw*3/4:0:(oh-ih)/2:color output
当不知道文件确切的分辨率时,直接按照4:3比例进行填充。
水平翻转:使用 -vf hflip
ffplay -i input.mp4 -vf hflip // 使用ffplay直接播放
垂直翻转:使用-vf vflip
ffplay -i input.mp4 -vf vflip
旋转:使用-vf transpose=x
ffmpeg -i input.mp4 -vf transpose=0 out.mp4
x=0:逆时针旋转90° 并且垂直翻转
x=1:顺时针方向旋转90°
x=2:逆时针方向旋转90°
x=3:顺时针方向旋转90°,并且垂直翻转
输入视频一般包含各种噪声,可以通过一些去噪算法来提升视频的质量。在视频被编码前,去噪是视频处理的一部分。
模糊效果用于提高视频帧中某些类型的质量,其中每个输出像素值都是从相邻像素值中计算出来的。
创建一个模糊效果:luma半径未1.5,权值为1
ffmpeg -i input.mp4 -vf boxblur=1.5:1 output_boxblur.mp4
锐化或模糊视频可以使用unsharp滤波器。锐化滤波器可以用于普通非锐化模糊及高斯模糊。
使用默认值来增强输入:命令如下
ffmpeg -i input.mp4 -vf unsharp -output_unsharp.mp4
降噪:可以用hqdn3d过滤器默认值来降低输入视频的噪声
ffmpeg -i input.mp4 -vf hqdn3d output_hqdn3d.mp4
画中画,也就是视频叠加,通常用于在背景视频或图像上显示前景视频或者图像。
具体命令如下:
ffmpeg -i input1 -i input2 -filter_complex overlay=x:y output
input1 是背景视频 input2是logo图片或者视频 x:y为对应logo所在坐标
其中可用W,H表示背景的宽和高,w,h表示前景的宽和高。
x:y 可省,overplay=x即代表y默认为0。 overplay=0:y 表示x为0.
logo在一段时间后显示
ffmpeg -i input.mp4 -itsoffset 5 -i logo.jpg -filter_complex overlay output_with_timer.mp4
表示 logo在5秒钟后开始显示。
分为四个步骤:
一、解复用过程:使用libavformat库和解复用器进行解复用,分离出原视音频和视频数据。
二、解码:通过对应的解码器解码成未压缩的视频帧
三、编码过程:编码器把未压缩的帧编码成原视数据包
四、复用过程:通过复用器将原始数据包合成指定的封装格式
查看编码-解码器
ffmpeg -codecs
查看所有解码器
ffmpeg -decoders
查看所有编码器
ffmpeg -encoders
重写相同命名的输出文件 -y表示强制重写
ffmpeg -y -i input.mp4 output.mp4
提取媒体文件中的部分内容,如提取第五分钟的内容
ffmpeg -i input.mp4 -ss 240 -t 60 clip_5th_mins.mp4
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。