FFmpeg命令系列
在Mac下编译 FFmpeg ,并在Android中使用
每天一点FFmpeg(1)
每天一点FFmpeg(2)
每天一点FFmpeg(3)
每天一点FFmpeg(4)
每天一点FFmpeg(5)
每天一点FFmpeg(6)
分辨率
分辨率的概念
分辨率是一个表示图像精细程度的概念。通常用横向和纵向点的数量来衡量。每英寸的像素点越多,分辨率越高,图像越精细。
图片大小计算:
假设一张像素为1080X1920(清晰度,宽1080个像素点,高1920个像素点)的图片,
大小为约为1080X1920X3 bytes 约等于 6M
之所以图片大小是像素宽高相乘还要乘3 是因为一个像素点需要至少三原色(RGB)来显示像素点本身的颜色.例如#ffffff - 代表白色 ffffff是十六进制数,也就是4位二进制数,三原色需要3X4X2位二进制数,也就是3个八位,一个八位是一个字节,所以我们需要3个字节来显示一个像素点。
改变视频文件分辨率FFmpeg命令
1、使用 参数选项 -s wxh
,w
为宽度,h
为高度,单位px
还是使用demo.mp4,视频的原信息为:
把视频的分辨率修改为 320 x 240:
ffmpeg -y -i demp.mp4 -s 320x240 demp-320x240.mp4
执行结果
ffmpeg还支持了一些视频预定义尺寸如下图:
下面两个命令,运行后是同样的效果。
ffmpeg -y -i demp.mp4 -s 320x240 demp-320x240.mp4
ffmpeg -y -i demp.mp4 -s vga demp-320x240.mp4
2、使用scale filer调整分辨率
-vf scale=width:height[:interl={1|0|-1}][:eval={init|frame}]
参数说明:
-vf: video fliter
width:scale的宽度 (必填)
height:scale的高度(必填)
interl:
Set the interlacing mode. It accepts the following values:
‘1’
Force interlaced aware scaling.
‘0’
Do not apply interlaced scaling.
‘-1’
Select interlaced aware scaling depending on whether the source frames are flagged as interlaced or not.
Default value is ‘0’.
eval
Specify when to evaluate width and height expression. It accepts the following values:
‘init’
Only evaluate expressions once during the filter initialization or when a command is processed.
‘frame’
Evaluate expressions for each incoming frame.
Default value is ‘init’.
Scale 还有一些额外的常量。
| 常量 | 描述 |
| -------- |: -----: |
| in_w ,iw | 输入视频文件的宽度|
| in_h,ih| 输入视频文件的高度 |
| out_w,ow| 输出视频文件的宽度|
| out_h,oh| 输出视频文件的高度|
| a| iw / ih|
举例:
1.把输入视频文件缩放200 x 100,下面的命令效果都一样:
ffmpeg -y -i demp.mp4 -vf scale=200x100 demo-200x100.mp4
ffmpeg -y -i demp.mp4 -vf scale=200:100 demo-200x100.mp4
ffmpeg -y -i demp.mp4 -vf scale=w=200:h=100 demo-200x100.mp4
2.把输入视频文件缩放为原来的2倍,下面的命令效果都一样:
ffmpeg -y -i demp.mp4 -vf scale=2*iw:2*ih demo-2double.mp4
ffmpeg -y -i demp.mp4 -vf scale=2*in_w:2*in_h demo-2double.mp4
3.在不知道视频分辨率的情况下,保证调整的分辨率与源视频有相同的横纵比
假如宽度固定480,高度成比例:
ffmpeg -y -i demp.mp4 -vf scale=480:480/a dem0-a.mp4
ffmpeg -y -i demp.mp4 -vf scale=480:-1 dem0-a.mp4
同样的,假如高度固定640,宽度成比例:
ffmpeg -y -i demp.mp4 -vf scale=640*a:640 dem0-a.mp4
ffmpeg -y -i demp.mp4 -vf scale=-1:640 dem0-a.mp4
END.