趣文网 > 作文大全

编程小短文:FFmpeg视频画面尺寸调整 必知必会

2020-11-26 09:25:01
相关推荐

引言

FFmpeg是音视频处理领域,应用范围最广的一个项目。

我们日常使用的大小桌面版视频播放器,或者命令行使用的播放器,大多数是基于 ffmpeg 开发的。

如果说它是音视频编解码处理中的老大哥,这一点都不为过。

本文主要从一个小知识点作为切入面,深入介绍一下,如何有效地压缩和降低视频文件的体积。

问题的提出

有一位题主遇到下面的情况,他有一个视频文件,宽高比是 1024x576,现在想要将尺寸调整为 720x480,应该怎么办?

当然了,这对于 ffmpeg 应用程序来说是小菜一碟。只用执行下面一行指令。

ffmpeg -i input.avi -s 720x480 -c:a copy output.mkv

其中:

-s:是 --scale 的短选项,用于指定输出文件的画面宽高比;

-c:a:是输出音视频的盒子,copy 说明了是不做任何处理,原样输出。

如果想要限制画面宽度,而对于画面高度想要自动的进行裁切,那么就要用到过滤器。执行下面一行指令。

ffmpeg -i input.avi -filter:v scale=720:-1 -c:a copy output.mkv

-1将告诉ffmpeg自动选择与提供的宽度相关的正确高度,以保持宽高比。如果用户给定了高度,那么-1则可以用于指定保持宽高比中的宽度。

使用libx264时,Scale的一个缺点是此编码器需要偶数值,Scale可能会自动选择奇数值,从而导致错误:宽度或高度不能被2整除。

你可以告诉Scale为给定高度选择偶数值(在本例中为720):

scale="trunc(oh*a/2)*2:720"

或者指定高度,

scale="1280:trunc(ow/a/2)*2"

引申讨论

一般情况下我们会把固定格式宽高比的视频文件转换为统一格式,用于适配不同型号的手机。那么有没有办法,在不知道目标型号手机的宽高比的时候,按照百分比为视频画面进行调整呢?答案是肯定有的。

比如下面这样对画面进行宽高50%的收缩。

ffmpeg -i input.avi -vf scale="iw/1:ih/2" output.avi

你应该会注意到我们使用了两个变量。

iw:输入文件的画面宽度ih:输入文件的画面高度这两个是系统的常量,可以拿来直接使用。

写在最后

其实 ffmpeg 所提供的过滤器功能十分复杂,而且功能十分强大。可应用于众多领域的音视频转换,只要是输入的视频流,均可进行深度的处理。

Happy coding :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

阅读剩余内容
网友评论
相关内容
延伸阅读
小编推荐

大家都在看

团结合作作文 她笑了作文 我的旅行英语作文 我的外公作文 逛公园作文 一日游作文300字 春节的英文作文 小学满分作文 站立作文 关于细节的作文 奋斗作文800字 关于北京的作文 新年300字作文 爱国情怀的作文 开学了的作文 幸福作文300字 关于担当的作文 关于偶像的作文 记事作文怎么写 写父爱的作文 新年的愿望作文 写人的作文500 世界文化遗产作文 六上英语作文 遇见作文400字 高考英语作文题目 春天作文100字 写小兔子的作文 多肉植物作文 微笑作文500字