每天一点FFmpeg(2)

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 wxhw为宽度,h为高度,单位px
还是使用demo.mp4,视频的原信息为:

006.png

把视频的分辨率修改为 320 x 240:

ffmpeg -y -i demp.mp4 -s 320x240 demp-320x240.mp4

执行结果


007.png

不知道-y -i 参数什么意思,点这里 ;

ffmpeg还支持了一些视频预定义尺寸如下图:

bbb.png

下面两个命令,运行后是同样的效果。

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.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 如此强大的FFmpeg,能够实现视频采集、视频格式转化、视频截图、视频添加水印、视频切片、视频录制、视频推流...
    骚之哈塞給阅读 25,851评论 6 39
  • 前言 如此强大的FFmpeg,能够实现视频采集、视频格式转化、视频截图、视频添加水印、视频切片、视频录制、视频推流...
    sillen阅读 5,423评论 2 45
  • 前言 如此强大的FFmpeg,能够实现视频采集、视频格式转化、视频截图、视频添加水印、视频切片、视频录制、视频推流...
    RichyLeo阅读 17,517评论 1 22
  • 我的姥爷在我印象中越来越模糊,以至我要静下心来使劲的想才能想出那个慈祥的脸。姥爷已经去世多年,掰着手指数起来...
    小小尾巴草阅读 285评论 0 1
  • 在紧张的学习中,我们一边咀嚼消化着老师讲解的关于学生心理健康的相关内容,一方面还在那每天重复着的单...
    漫步云端常想一二阅读 244评论 0 1