当前位置:   article > 正文

FFmpeg安卓开发2-FFMpeg常用命令_ffmpeg hqdn3d

ffmpeg hqdn3d

1.改变帧率,码率和文件大小

视频帧率:(Frame rate)是用于测量显示帧数的量度。所谓的测量单位为每秒显示帧数(Frames per Second,简:FPS)或“赫兹”(Hz)。此词多用于影视制作和电子游戏。
由于人类眼睛的特殊生理结构,如果所看画面显示的速率在29.97时候,就会认为是连贯的,所以基本上视频的帧率都处于30-60之间,帧率越大,视频质量越高,所占存储空间越大。帧率超过60之后人眼感觉不到有任何差别,所以基本帧率最高一般不会超过60。
改变帧率帧率为30

**使用-r指定帧率**
ffmpeg -i input.avi -r 30 output.mp4
  • 1
  • 2

码率: 也叫做比特率或数据速率,它指定每个时间单位处理的比特数,在ffmpeg中,码率以每秒比特数表示。码率决定使用多少位存储1秒内编码的流数据。
设置码率:

**使用-b 指定码率**
ffmpeg -i film.avi -b 1.5M film.mp4  
  • 1
  • 2

**文件大小:**音频流和视频流文件大小的总和。
设置文件大小:

**使用-fs设置输出文件大小的最大值,最小单位为byte**
ffmpeg -i input.avi -fs 10MB output.mp4
  • 1
  • 2

视频流文件大小计算规则:

视频码率×视频时长/8        //以byte为单位
  • 1

压缩的音频流计算规则:

音频码率×视频时长/8
  • 1

2.调整视频分辨率

调整视频分辨率,主要是改变视频的宽和高。

使用具体分辨率设置:

**使用-s指令设置分辨率**
ffmpeg -i input_file -s 320×240 out_file // 宽×高
  • 1
  • 2

使用ffmpeg默认分辨率设置:

ffmpeg -i input.avi -s vga output.avi
  • 1

默认分辨率对应名称如下:

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

另外使用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 
  • 1
  • 2
  • 3

3. 裁剪/填充视频

裁剪视频,即在视频的视区内选择一个矩形块进行裁剪,裁剪完成后矩形区块外的视频画面被裁剪掉,不再存在当前视频画面中。
裁剪视频需要指定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 //同理可推断出该区域为右边的三分之一 
  • 1
  • 2
  • 3

其中裁剪点的坐标x,y可省,默认值为

xdefault=(input width - output width)/2
ydefault= ( input height-output height) /2
  • 1
  • 2

即默认裁剪大小为你输入的宽高矩阵,但是通过裁剪坐标的平移,将裁剪的矩形块的位置移到原视频的中心区域。
裁剪中间的一半为:

ffmpeg -i input.avi -vf crop=iw/2:ih/2 output.avi
  • 1

填充视频
在视频中添加一个额外的区域来添加额外的内容。

ffmpeg -i input.avi -vf pad=800:400:x:y:color output.avi
  • 1

参数规则: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
  • 1

将16:9视频转换成4:3时,需要保持宽度不变,高等于宽×3/4

ffmpeg -i input -vf pad=iw:iw*3/4:0:(oh-ih)/2:color output
  • 1

当不知道文件确切的分辨率时,直接按照4:3比例进行填充。

4. 旋转和翻转视频

水平翻转:使用 -vf hflip

ffplay -i input.mp4 -vf hflip  // 使用ffplay直接播放
  • 1

垂直翻转:使用-vf vflip

ffplay -i input.mp4 -vf vflip
  • 1

旋转:使用-vf transpose=x

ffmpeg -i input.mp4 -vf transpose=0 out.mp4
x=0:逆时针旋转90° 并且垂直翻转
x=1:顺时针方向旋转90° 
x=2:逆时针方向旋转90°
x=3:顺时针方向旋转90°,并且垂直翻转
  • 1
  • 2
  • 3
  • 4
  • 5

5. 模糊和锐化

输入视频一般包含各种噪声,可以通过一些去噪算法来提升视频的质量。在视频被编码前,去噪是视频处理的一部分。
模糊效果用于提高视频帧中某些类型的质量,其中每个输出像素值都是从相邻像素值中计算出来的。
创建一个模糊效果:luma半径未1.5,权值为1

ffmpeg -i input.mp4 -vf boxblur=1.5:1 output_boxblur.mp4
  • 1

锐化或模糊视频可以使用unsharp滤波器。锐化滤波器可以用于普通非锐化模糊及高斯模糊。
使用默认值来增强输入:命令如下

ffmpeg -i input.mp4 -vf unsharp -output_unsharp.mp4
  • 1

降噪:可以用hqdn3d过滤器默认值来降低输入视频的噪声

ffmpeg -i input.mp4 -vf hqdn3d output_hqdn3d.mp4
  • 1

6.画中画

画中画,也就是视频叠加,通常用于在背景视频或图像上显示前景视频或者图像。
具体命令如下:

ffmpeg -i input1 -i input2 -filter_complex overlay=x:y output
  • 1

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
  • 1

表示 logo在5秒钟后开始显示。

7.文件格式转换

分为四个步骤:

一、解复用过程:使用libavformat库和解复用器进行解复用,分离出原视音频和视频数据。
二、解码:通过对应的解码器解码成未压缩的视频帧
三、编码过程:编码器把未压缩的帧编码成原视数据包
四、复用过程:通过复用器将原始数据包合成指定的封装格式
  • 1
  • 2
  • 3
  • 4

查看编码-解码器

ffmpeg -codecs
  • 1

查看所有解码器

ffmpeg -decoders
  • 1

查看所有编码器

ffmpeg -encoders
  • 1

重写相同命名的输出文件 -y表示强制重写

ffmpeg -y  -i input.mp4 output.mp4
  • 1

8.时间操作

提取媒体文件中的部分内容,如提取第五分钟的内容

ffmpeg -i input.mp4 -ss 240 -t 60 clip_5th_mins.mp4
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/174782
推荐阅读
相关标签
  

闽ICP备14008679号