使用开源软件和库对AVIF图片进行编码和解码

其中一个Android 12的新功能是对AVIF文件格式的支持,它提供了更小的文件,并且具有相同的质量级别。杰克·阿奇博尔德你做得很好吗将AVIF格式与JPEG、WebP和其他静态图片格式进行比较,结果非常令人印象深刻。

除了Android 12, Chrome浏览器也支持AVIF,火狐86也默认支持AVIF,但我们将在这里看看一些开源程序和库,让你可以操作AVIF图片。

libavifAOMedia已经发布了C语言的参考实现,以及avifenc和avifdec工具,它们依赖于各种编解码器,但它出现了rav1e建议对AVIF图像进行编码,而dav1d是AVIF解码的最佳选择。

libavif不会自动构建编解码器,它们需要在CMakeLists.txt中启用


以及定义所选编解码器的路径。

rav1e AVIF编码库和cavif-rs工具

让我们在Ubuntu 20.04中构建rav1e:


我在AMD Ryzen笔记本电脑中实现了这一点,但rav1e针对Arm和x86进行了优化:

  • asm–默认情况下启用。启用后,将为支持它的平台构建程序集。
    • x86_64:需要nasm
    • aarch64
      • 需要气体
      • 替代方案:用铿锵声汇编程序设置CC =叮当声

请注意:SSE2总是启用x86_64,霓虹灯总是为aarch64启用,你可以设置环境变量RAV1E_CPU_TARGET生锈在运行时禁用所有程序集优化的例程。

rav1e基于rust,但也有一个C库,其中包含头文件和pkg配置文件,供希望将rav1e集成到其C项目中的人员使用。它可以按如下方式生成:


rav1e用于对原始视频进行编码,而且afaik没有对AVIF图片文件进行编码的示例,因此我们可以使用libavif或cavif-rs从PNG或JPG文件生成AVIF文件。

下面是如何在Ubuntu 20.04中构建cavif-rs:


注意,它将在过程中编译rav1e,因此不需要预先构建rav1e。现在我们可以运行程序来测试它:


在AMD Ryzen 7 2700U处理器上,将PNG文件转换为AVIF文件几乎需要5秒钟,但现在文件要小得多:


公平地说,这可能不是无损PNG格式的最佳文件。然后我可以在Chrome中打开文件,很难看到区别:

avif vs . png
AVIF(左)vs PNG(右)

你也可以检查原件巴布亚新几内亚阿维夫文件。

dav1d AVIF解码库和davf工具

大多数嵌入式系统可能只使用AVIF解码/渲染,为此,我们可以构建dav1d C库:


与rav1e一样,dav1d针对Arm和x86目标进行了优化。在工作时,编解码器使用64位Arm处理器的汇编代码进行了优化,这些处理器使用NEON SIMD指令,x86芯片使用AVX2和SSSE3+SIMD指令。ARMv7(32位arm)和不太常见的架构PPC、SSE2或AVX-512的工作仍在进行中。

然后,您可以使用代码集成到您的程序,但如果我们想要一个代码示例,将解码/转换AVIF文件使用dav1d,davif该工具可以将AVIF文件转换为PNG。

这就是我在Ubuntu 20.04中构建它的方式:


从AVIF到PNG的转换要比另一种方式快得多,更精确地说,要快10倍以上。


因为所有东西都是用C和汇编器编写的,所以移植到资源受限的嵌入式系统可能会更容易。

值得注意的是,AVIF并不是唯一一种新的图片格式,JPEG XL也在开发中,但它可能需要更长的时间才能集成到web浏览器中。您将找到JPEG XL的参考实现在Gitlab.讨论了AVIF与JPEG XL的区别编码。苏论坛Cloudinary博客AVIF提供更好的压缩,但JPEG XL解码器,尤其是编码器应该更快,并支持更大的分辨率,而AVIF仅限于3840×2160,这似乎有些奇怪.JPEG XL没有版税,并且与JPEG兼容。

分享:

支持CNX软件!www.yabo188.vip通过捐款贝宝cryptocurrencies,成为赞助人Patreon,或者购买评论样本

订阅
通知的
客人
评论表单收集您的姓名、电子邮件和内容,以便我们跟踪网站上的评论。请阅读并接受我们的网站条款和隐私政策以发表评论。
6.评论
最老的
最新的
施穆茨
施穆茨
6个月前

有趣的文章。
编码器已经做了videolan ?
Image亚博体育官下载Magick怎么样?这个工具是多平台的,通常很适合管理所有的图像编码。

那么hevc和av亚博体育官下载1之间的比较呢。
Hevc存在于所有的ios设备中,因此它关系到很多人。

tkaiser
tkaiser
6个月前

很可能是关于HEIC和AVIF的。亚博体育官下载

施穆茨
施穆茨
6个月前

感谢这些精准度。哦,是的,我可能是说heic和avif

tkaiser
tkaiser
6个月前

>Image亚博体育官下载Magick呢?

祝你好运从源代码构建

书中Svoboda
书中Svoboda
6个月前

AVIF不限于4K,只有基线配置文件是,甚至可以超过它。这是为了确保与解码AV1视频的播放器的兼容性。更多的在这里https://aomediacodec.github.io/av1-avif/#baseline-侧面图

广告