超硬核!图片压缩15%画质,节省85%空间!ffmpeg权威指南 [1]入门

2022-11-09 19:41:29 6点赞 15收藏 5评论

本文索引

  • ffmpeg是什么


  • 官方参考资料


  • 了解相关常识


  • 学习如何使用

首先,自我介绍

手机编辑:因为smzdm不允许引用Github链接,所以请读者搜索引擎自行检索

本文与上篇不同,属技术类指南,旨在保证内容质量和严谨,用词无法做到欢乐恶狗

本文具有权威性,但个人水平还是过于拙劣,出现错误还请指出,我将直接自行举报打回修改

本文仅作为快速上手教程,细节补充,内容冲突或过时,以官方文档为准

本文由zmxyz原创,同步发布在个人博客,使用CC-BY-ND 4.0许可证共享(原作署名,禁止商业使用,禁止二次创作分发),垃圾营销号照搬小心我向搜索引擎/托管平台发dmca嗷,规范转载请在评论区留下你转完的url

同时,本人会对文章内部引用的内容进行链接,尊重他人创作成果

本文参加数码达人评选,按照tag检索了解到,数码板块包括软件技巧

同时因为符合标准,我必须向这篇文章植入一个商品链接,可以保证没有利益关联,自营官方直达,没有返利(对于我来说没有,smzdm会不会有就不确定了)

当然也是站在个人角度推荐,应该是大厂里相对便宜的128g卡了,支持u3(顺序写入高于30MByte/s)a2(随机iops大于4000)标准,十年质保,送卡套,玩坏了直接保修,在我这个dev眼里作为开发板的引导盘算是合格了

双十一没有便宜,日常价一直都是64.9块128g,还算稳定,毕竟消耗品,缺时买就完了

三星(SAMSUNG)128GBTF(MicroSD)存储卡EVOPlusU3V30A2读130MB/s高速游戏机平板内存卡64.9元京东去购买


做个测试,证实我的标题

Pexels:Athena(图片来源)

忽略我用Windows终端但使用bash语法,因为开发用到gcc使用了一个叫msys2的工具链

语法自行转义,Windows用户尽量使用PowerShell而不是cmd

Linux用户请在glibc环境下使用,musl翻车后果自负

左侧终端内有文件体积左侧终端内有文件体积

处理完成后文件比对处理完成后文件比对

超硬核!图片压缩15%画质,节省85%空间!ffmpeg权威指南 [1]入门

超硬核!图片压缩15%画质,节省85%空间!ffmpeg权威指南 [1]入门

5205808/369016=14.10726906150411

369016/5205808*100%=7.088544179885236%

压缩后体积减少了不只85%!!!

而画质没有明显下降,无论放大与否

所以我们要开始学习:

ffmpeg是什么

FFmpeg 是一个开放源代码的自由软件,可以执行音频和视频多种格式的录影、转换、串流功能,包含了libavcodec——这是一个用于多个项目中音频和视频的解码器库,以及libavformat——一个音频与视频格式转换库。

--Wikipedia

ffmpeg项目,它是个库,同时也是个工具

你可能觉得命令行调用非常原始,但更疯狂的是,它可以由开发者编写代码嵌入在其他程序里使用

你曾经用过带图形界面的转码工具,有90%以上的可能调用ffmpeg执行的

你所使用的每一个和音视频图片相关的app,也都可能有引用过它的代码

同时,作为一个开源项目,任何人可以在遵循其许可证的情况下任意使用项目产出

这么一看,哇,是不是很厉害,更厉害的还在后面,建议看完自己动手试试

我所期望读者具备的能力,如果你不会但愿意认真学习,那也是好样的!

  • 会操作任意平台的shell


  • 了解相对与绝对路径


  • 对音视频图片常识有些许了解


  • 能阅读英文文档(开翻译工具也行)


  • 会提取错误信息,尝试检索并解决


  • 尝试后无法解决可以寻求帮助,注意遵循 提问的艺术(Github:ryanhanwu/How-To-Ask-Questions-The-Smart-Way)

官方参考资料

首先,全部为官方或官方认可的资料,没有误导和过时

本文仅作为快速上手教程,细节补充,内容冲突或过时,以官方文档为准

非官方参考资料

首先我们要知道,ffmpeg官方并不直接提供二进制可执行文件,他们的下载页面指向了志愿者提供的自动化构建服务,而btbN的仓库对于Linux和Windows下多种硬件图形卡都有支持,所以推荐使用

构建命名解释

ffmpeg-master-latest-linux64-gpl-shared.tar.xz

ffmpeg-[分支]-[git提交hash]-[平台]-[许可证]-[库的链接类型].[归档格式]

分支是指大版本号,git提交hash代表每个pull request的唯一id,如同安卓9和安卓10,两者同时存在,但也同时进行维护,直到EOL生命周期结束,如果不追求特定老版本,就直接使用master或最新代号(目前是n5.5)即可

平台我就不用解释了,Linux就Linux,Windows就Windows

许可证分为gpl和lgpl,后者相比前者更为宽松,可以以链接库的形式引用于商业软件

链接方式如果有提示shared,就表示文件是散装的,库 文档 头文件都在目录里,适合开发者调用,没有shared的压缩包里就只有三个可执行文件

归档格式也不提了,什么平台用什么工具就行

ffmpeg官方文档

建议仔细阅读,这几个官方链接比搜索到的一堆二手教程有用的多,有什么参数不懂就 Ctrl+F 搜

比如我想了解后续文章中,"-vf scale=iw/2:ih/2"的意义,我可以直接搜索flag名"-vf",而不是带全部参数,我们就可以得到

Simple filtergraphs are configured with the per-stream -filter option


(with -vf and -af aliases for video and audio respectively).


A simple filtergraph for video can look for example like this:

而不是打开浏览器 -> 输入"ffmpeg -vf scale 是什么意思" -> 然后在一堆过时内容里寻找二手信息

了解相关常识

命令行从入门到精通

首先我们先下载一个ffmpeg预构建包,解压并cd到目录下

拿处理一张照片举例,因为照片处理时间短,效果显著,不需要了解各种参数和配置硬件加速

./ffmpeg -i input.jpg output.webp

#usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

这段命令中,

"./ffmpeg.exe"指命令行执行当前目录下的ffmpeg,你也可以写入环境变量或者用绝对路径执行

"-i input.jpg"这个flag表示应该将相对路径下的input.jpg作为输入文件

"output.webp"表示文件将以webp格式输出

没有指定任何质量参数时,webp默认会保持原像素,以质量75%进行采样,以libwebp编码器处理

此时没有指定编码器,是因为webp格式和编码高度绑定,ffmpeg将.webp扩展名作为默认参数,但在视频处理上常常有不同编码共用一个容器格式的情况发生,这时如果不想出现问题,就应该手动指定

  • vcodec(视频)


  • acodec(音频)


  • codec(图片)

理解这些以后,你会发现所有参数都是以flag形式传入的,flag应当放在input文件名和output文件名中间(其他位置无效),带单或双横杠的叫flag,没跟杠的叫做flag传递的参数

所以"-i input.jpg"是一组flag参数

而output.webp则是ffmpeg的参数

编码质量小课堂

上述提到,如果使用libwebp不指定编码质量会以75%采样,这是大家所认可性价比比较高的一个值

测试过50%和25%,感觉性价比不高,带来的体积减小有限,反而对画面大砍了一道,所以没啥用

但如果你有别的想法,像极限压缩,或者无损转码,那么可以追加以下flag参数

设置质量

-q [0-100]

设置无损,1=True,0=False

--lossless [0,1]

那么进阶一下,我要开始追加参数了

我是怎么压缩图片的

编码器参数硬件加速乱七八糟的东西可以专门水114514篇文章,这次只拿webp举例,这是一个压缩比很高,很适合网络传输的标准,兼容性也很强,适用于全部现代浏览器和第三方看图工具

配合开头的几张图片食用更佳

我的参数

./ffmpeg -i input.jpg -vf scale=iw/2:ih/2 output.webp

这个命令就是我开篇所演示的,但我为什么要这么设置呢?(当然,以下素材为私人使用,就不放上来了)

因为多数情况下,单反拍摄出6720*4480的图片画幅过大,而常规笔记本仅有1080p分辨率,所以直接通过追加flag参数

-vf scale=iw/2:ih/2

长宽重设为原有的一半(0.5*0.5,所以总像素是以前的是0.25)

在文档中,-vf指video filter,视频过滤器,在ffmpeg中,图像会被当做1帧视频处理

没有指定质量,保持默认参数

所以,在webp重编码,质量取75%,分辨率重设到四分之一,这么一套灵活操作,我们的体积从

12.7MB -> 155KB

FREAKING AWESOME RIGHT?!在不缩放的情况下浏览,效果基本一致

当然,我们也鼓励大家尝试不同的参数,如果你想折腾质量,参考上面的"编码质量小课堂",测试出更适用于你的图像

对于编码用时,我的机器是Intel i5 1035G1,10nm工艺,4核心8线程,16g内存,pcie3.0总线的sn730固态

frame= 1 fps=0.9 q=-0.0 Lsize= 156kB time=00:00:00.04 bitrate=31167.6kbits/s speed=0.0359x
video:156kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%

可以看到,用时无限接近0,一秒钟可以处理25张这么高质量的图像,如果用脚本并行处理还会更快

我想草率结尾

一张Meme送给看到这里的你们,理解万岁!

超硬核!图片压缩15%画质,节省85%空间!ffmpeg权威指南 [1]入门

因为上一篇文章反响一般,还是做我想做的事吧!后面会继续更新ffmpeg处理音频,视频,工具链,硬件加速,码率控制器,编码格式和生态相关文章的!

最后,一张Meme送给我自己

超硬核!图片压缩15%画质,节省85%空间!ffmpeg权威指南 [1]入门






作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起

ihuman 洪恩 识字子集拼音思维ABC会员永久包3-6岁儿童早教启蒙礼物玩具 识字会员终身包

ihuman 洪恩 识字子集拼音思维ABC会员永久包3-6岁儿童早教启蒙礼物玩具 识字会员终身包

268元起

WPS 金山软件 WPS 超级会员 3年卡

WPS 金山软件 WPS 超级会员 3年卡

278元起

Microsoft 微软 OFFICE 365 家庭版 会员

Microsoft 微软 OFFICE 365 家庭版 会员

238元起

统信 UOS桌面操作系统V20/适用于国产型号/官方正版授权/国产专用

统信 UOS桌面操作系统V20/适用于国产型号/官方正版授权/国产专用

598元起

Microsoft 微软 Office 365 个人版

Microsoft 微软 Office 365 个人版

75元起

Microsoft 微软 大促爆发到手15月 微软office365家庭版microsoft365增强版

Microsoft 微软 大促爆发到手15月 微软office365家庭版microsoft365增强版

275元起

Microsoft 微软 OFFICE 365 个人版 办公软件

Microsoft 微软 OFFICE 365 个人版 办公软件

189元起

WPS超级会员2年pdf转word官方正版思维导图排版简历模板赠AI会员

WPS超级会员2年pdf转word官方正版思维导图排版简历模板赠AI会员

188.1元起

WPS超级会员Pro套餐4年卡1488天官方正版pdf转word排版

WPS超级会员Pro套餐4年卡1488天官方正版pdf转word排版

676.4元起

任天堂 Nintendo Switch《舞力全开 Just Dance》 游戏兑换卡

任天堂 Nintendo Switch《舞力全开 Just Dance》 游戏兑换卡

158元起

365office365OfficePLUS Microsoft365 12 -

365office365OfficePLUS Microsoft365 12 -

235元起

WPS 金山软件 会员季卡

WPS 金山软件 会员季卡

37.05元起

WPS超级会员4年套餐pdf转word排版PPT润色模板素材店铺

WPS超级会员4年套餐pdf转word排版PPT润色模板素材店铺

暂无报价

国行版 Switch体感游戏套装 《健身环大冒险》

国行版 Switch体感游戏套装 《健身环大冒险》

439元起

WPS 金山软件 超级会员年卡+芒果TV年卡

WPS 金山软件 超级会员年卡+芒果TV年卡

158元起

Microsoft 微软 618活动6天 office365家庭版microsoft365订阅密钥

Microsoft 微软 618活动6天 office365家庭版microsoft365订阅密钥

235元起
5评论

  • 精彩
  • 最新
  • 自己更新技术类文章其实挺不容易的 [喜极而泣] 但是必须要支持一下。
    可以试试把复杂的主题拆分成多篇文章,逐篇深入地把每一点细节和每一个名词都讲清楚。 [观察]

    校验提示文案

    提交
    大佬有心了 [喜极而泣]

    校验提示文案

    提交
    收起所有回复
  • 坏了,怎么发啥沉啥

    校验提示文案

    提交
    因为大妈这里不适合发这种文。一般这里推荐软件,要么是gui简单,傻瓜包式安装。要么复杂无比,恨不得自己改脚本改配置自己编译。你这种shell里面敲参数,但说的又不深入,基本是懂的不屑看,不懂的懒得看。

    校验提示文案

    提交
    收起所有回复
  • 支持一下 [赞]

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
天猫超级红包
距结束::
每天领现金,最高24888元
红包按钮
最新文章 热门文章
15
扫一下,分享更方便,购买更轻松