半肾
精华
|
战斗力 鹅
|
回帖 0
注册时间 2019-8-30
|
本帖最后由 冰箱研会长 于 2020-8-18 09:27 编辑
如果你觉得我遗漏了什么重要信息, 或者压根就看不懂我再说什么, 参见第一集
████████████████
距离第一集已经过了将近两个月了, 期间我的collection也从成长到撑爆了1T Onedrive的地步 (虽然后来发现这是因为onedrive回收站也算空间).
在考研复习和考研复习的间隙里, 看了不少图像处理的工具.
因为Netflix选择了AVIF作为下一代图像技术, 我也顺便研究了一下把收藏转换成AVIF的可能性,
具体的操作按下不表(可能会补在后面), 这里还是主要说HEVC.
在这段寻找解决方案的途中, 我发现了诸如 Colorist, Cavif, go-avif等等转换工具,
和像Vantage这样的HDR图像查看器.
一般来讲, 说到图像的综合批量处理工具, 无外乎就是 Image Magick 和 FFmpeg, 其他 "全知全能" 的工具也没有几个.
而HEIC因为HEVC版权的原因, 在诸多流行工具里的实现情况实在是很糟糕,
这种不利直接导致我需要用ffmpeg先成帧再封装的方式来批量转换HEIC, 实在是复杂, 很有在bash里调用各种外部命令处理文字输出的彷徨感.
那个帖子的最终解决方案被坛友们称为天书, 实在是令人羞愧.
不过正像我后来在Powershell里找到了ConvertFrom-CSV一样, 我想我这次找到了一个足够简单的解决方案了.
Libvips
点我访问项目主页
Libvips是一个集成了多种高效算法的图像处理library, 内存消耗, 处理速度快, 而且对图像格式有很好的支持.
然而遗憾的是, 因为Libvips的heic功能需要调用GPL的FFMPEG, 直接发布成品release会导致整个项目的授权发生变化. (只有GPL软件才能使用GPL代码)
开发者告诉我, 想要使用这一功能的话, 需要我自己编译.
于是昨天一天, 我一边做高宇1000题一边在Arch上编译这个项目(感想),
在各种问题解决之后, 我终于编译出了成品, 一个和官方发布版本一模一样, 同样不支持heif的libvips.
心态爆炸的我向开发者询问, 开发者告诉我:
"你干得不错, 但有一个同事早就发布了可用的版本, 你可以下载他的"
他的版本
↑这里下载本文用的软件
好的, 不论结果如何, 至少我拿到了我想要的东西, 还发现用docker编译软件真是天才的想法, 我以后也这么干(.
我们得到了这样一个软件包:
bin目录下面的vips.exe就是这次要使用的工具.
找个喜欢的目录把软件包扔进去, 然后把bin目录添加到环境变量里.
随便打开一个powershell窗口, 输入vips, 如果出现下图所示的输出就算可以了.
vips将图片转换成heic的命令是
- vips heifsave <输入文件> <输出文件> --Q <质量因数 1倒100 默认50>
复制代码
如果忘记了, 可以直接输入来查看参数帮助.
让我随便找两个图来对比测试一下:
默认的50质量因数, 漫画的网点保存的也不错.
彩图则是有轻微的色彩失真, 其实也很难看出来.
总的来说, 虽然不如我ffmpeg版本那么精确, 但可以接受.
因为VIPS.exe是一款命令行工具, 所我们可以很轻松的使用powershell来进行目录批处理,
即在想要处理的目录下运行:
- Get-Childitem | %{vips heifsave $_.Name "$($_.Basename).heic"}
复制代码
即可批量处理当前目录下所有文件为heic.
如果想递归的处理文件夹下面的所有内容, 可以在根目录下运行
- Get-ChildItem -Recurse | %{vips heifsave $_.FullName "$($_.Directory.Fullname)\$($_.Basename).heic"}
复制代码
如果只想处理某一种格式的图像文件, 可以:
- Get-ChildItem -Recurse *.png| %{vips heifsave $_.FullName "$($_.Directory.Fullname)\$($_.Basename).heic"}
- Get-ChildItem -Recurse *.jpeg| %{vips heifsave $_.FullName "$($_.Directory.Fullname)\$($_.Basename).heic"}
复制代码 注:路径包含中文名的情况下请做如图设置, 让电脑使用utf-8编码
只需要一行命令就可以转换图像为HEIC, 同时唯一需要用户设置的只有环境变量, 比起ffmpeg的方案要简化了不少.
好的, 关于HEVC的内容就说这么多, 干货基本说完了.
吃完饭回来补充一些AVIF, VVC, EVC, LCEVC的闲谈.
来自我的不明所以的吐槽
现在这些图片压缩, 本质上就是用那些压缩率超高的视频压缩算法, 把图片压成一帧然后封装一个容器.
HEIC是这样, WEBP是这样, AVIF也是这样.
HEIC是我这段时间实践下来综合性能最好的, windows可以看, llinux可以看, 苹果们可以看, 安卓至少小米可以看.
编码速度也很快, 读写性能也不错.
然而HEIC有一个最大的缺点, 那就是HEVC的存在本身,
HEVC是MEGA动态专家组(ISO组织JTC1的SC29旗下的WG11)开发的新一代视频标准, 诸位熟知的AVC H264就是这个组织开发的.
然而和广为流行的H264不同, HEVC虽然不能说是举步维艰, 但也算是被钳制了发展, 完全找到不进一步发展的潜力.
这也同时导致了脱胎于HEVC的HEIC发展同样糟糕.
HEVC的专利是三个主要专利池外加一堆独立专利组成的, 这种混乱直接导致的结果就是授权(发布, 改善, 管理)的难产和高昂的授权费用.
高效图像格式的战场, 正如webp的名字暗示的一样, 在互联网上.
如果一个图像格式无法被主流浏览器识别显示的话, 那它永远都称不上流行.
在Firefox的讨论串里, "Mozilla不会支付版权费来使用HEVC技术" 已经成为了半个共识,
同时各位也可以思考一下, 如果看HEVC视频的唯一方式是win10商店里6元钱的HEVC插件的话, VCB-S一类的压制组还会选用H265吗?
H265的这种现状, 已经决定了它, 如果不改善专利池, 将永远是一个应用在工业领域的视频标准, 不可能广泛传播.
也许是觉得这是一个很好的切入点, AOM横空出世.
发布了无专利费用(存疑, 不过至少现在给出的授权都很open)的AV1视频标准.
并获得了广泛的支持.
然而, 即便AV1克服了HEVC的最大缺点, 其衍生的AVIF图像格式也得到了FIREFOX和CHROME的支持,
AV1本身编码速度之慢也仍是个无法忽略的问题.
同样的图片, 编码一张AVIF的时间, 说100张HEIC可能有些扯淡了, 编码50张同样质量的HEIC应该是没什么问题的.
各位感兴趣的可以使用ffmpeg对比一下.
另外, AVIF即使前景开阔, 目前的支持状况属实不是很好.
在我个人的实验中, 出现了不同工具生成的AVIF兼容性差别极大的情况.
按照AVIF主页所说, 对AV1视频关键帧进行封装的AVIF无论使用Firefox还是win10自身解码器都无法解码.
反而是第三方工具Vantage可以正确显示图像.
如果使用Colorist编码AVIF, 偶数宽高的图像会显示一列/行紫色像素, 在firefox中则没有这个问题.
CAVIF的问题则是难以控制质量, 产出的图片几乎就是像素块.
这些问题并不是AV1的问题, 而是朴素的, 时间的问题, 时间带来这些问题, 时间也会解决这些问题.
毕竟AOM才是个成立两年不到的组织, 而对面已经寿终正寝的MPEG享年31岁.
是的, MPEG已经寿终正寝了.
在今年的六月份, ISO对MPEG相关的组织结构进行了调整:
将原来工作组11(MEPG)旗下的诸多小组统统提升为了工作组, 直辖于SC29.
并且开除了原**Leonardo Chiariglione(老头现在天天在这里骂ISO, 骂的特别狠), 目前, 来自微软 (AOM的有力支持者) 的Sullivan直辖SC29.
真是让人担心SC29的未来啊.
不过另一方面, 今年刚刚发布的VVC(HEVC的后继者)早在2020之前就已经基本结束开发,
这次重组对其性能的影响估计是微乎其微的.
然而, 正如前MPEG的前**透露的一样, VVC的专利池远比HEVC庞大, 复杂.
就算可以在工业领域取得一席之地, 也不会具备像AV1(或者AV2)那种明朗的前景.
但从已知的信息可以发现, 前MPEG并没有忽视AOM的威胁.
今年预定发布的, 除了VVC以外还有EVC和LCEVC.
前者是目标无专利费用的编码格式(对线AV1), 后者则是目标实现可高速软件的低复杂度视频编码.
两者的专利池都十分清晰, 如果这两者也发布的话, 可以反向逼迫VVC改善自身专利结构也说不定.
总之, 在这些标准发布之后, 才是判断SC29能否继承MEPG辉煌的时候.
|
评分
-
查看全部评分
|