其中一个Android 12的新功能是对AVIF文件格式的支持,它提供了更小的文件,并且具有相同的质量级别。杰克·阿奇博尔德你做得很好吗将AVIF格式与JPEG、WebP和其他静态图片格式进行比较,结果非常令人印象深刻。
除了Android 12, Chrome浏览器也支持AVIF,火狐86也默认支持AVIF,但我们将在这里看看一些开源程序和库,让你可以操作AVIF图片。
与libavifAOMedia已经发布了C语言的参考实现,以及avifenc和avifdec工具,它们依赖于各种编解码器,但它出现了rav1e建议对AVIF图像进行编码,而dav1d是AVIF解码的最佳选择。
libavif不会自动构建编解码器,它们需要在CMakeLists.txt中启用
1.
2.
3.
4.
5.
|
选项
(
AVIF_编解码器
_急性中耳炎
使用AOM编解码器进行编码/解码(参见AVIF_CODEC_AOM_DECODE/AVIF_CODEC_AOM_ENCODE)
从
)
选项
(
AVIF_编解码器
_DAV1D
使用dav1d编解码器进行解码
在
)
选项
(
AVIF_编解码器
_LIBGAV1
使用libgav1编解码器进行解码
从
)
选项
(
AVIF_编解码器
_RAV1E
“使用rav1e编解码器进行编码”
在
)
选项
(
AVIF_编解码器
_SVT
“使用SVT-AV1编解码器进行编码”
从
)
|
以及定义所选编解码器的路径。
rav1e AVIF编码库和cavif-rs工具
让我们在Ubuntu 20.04中构建rav1e:
1.
2.
3.
4.
|
git
克隆
https
:
/ / github.com/xiph/rav1e
光盘
rav1e
苏多
恰当的
安装
货物
nasm
货物
构建
--
释放
|
我在AMD Ryzen笔记本电脑中实现了这一点,但rav1e针对Arm和x86进行了优化:
asm
–默认情况下启用。启用后,将为支持它的平台构建程序集。
x86_64
:需要nasm
.aarch64
- 需要
气体
- 替代方案:用
铿锵声
汇编程序设置CC =叮当声
请注意:
SSE2
总是启用x86_64
,霓虹灯
总是为aarch64启用,你可以设置环境变量RAV1E_CPU_TARGET
到生锈
在运行时禁用所有程序集优化的例程。
rav1e基于rust,但也有一个C库,其中包含头文件和pkg配置文件,供希望将rav1e集成到其C项目中的人员使用。它可以按如下方式生成:
1.
2.
|
货物
安装
货物
-
C
货物
cinstall
--
释放
|
rav1e用于对原始视频进行编码,而且afaik没有对AVIF图片文件进行编码的示例,因此我们可以使用libavif或cavif-rs从PNG或JPG文件生成AVIF文件。
下面是如何在Ubuntu 20.04中构建cavif-rs:
1.
2.
3.
|
git
克隆
https
:
//github.com/kornelski/cavif-rs
光盘
cavif
-
rs
货物
安装
cavif
|
注意,它将在过程中编译rav1e,因此不需要预先构建rav1e。现在我们可以运行程序来测试它:
1.
2.
3.
4.
5.
6.
7.
|
出口
路径
=
$
路径
:
/
首页
/
jaufranc
/
.
货物
/
箱子
时间
cavif
cnxsoft
-
标志
.
巴布亚新几内亚
cnxsoft
-
标志
.
阿维夫
:
30KB
(
29221 b
颜色
,
0B
α
,
188 b
HEIF
)
真正的
0m4.753s
用户
0 m17.945s
sys
0m0.064s
|
在AMD Ryzen 7 2700U处理器上,将PNG文件转换为AVIF文件几乎需要5秒钟,但现在文件要小得多:
1.
2.
3.
|
ls
cnxsoft
-
标志
.
*
-
L
-
rw
-
rw
-
R
--
1.
jaufranc
jaufranc
29409
2月
23
11
:
05
cnxsoft
-
标志
.
阿维夫
-
rw
-
R
--
R
--
1.
jaufranc
jaufranc
205216
2月
23
11
:
03
cnxsoft
-
标志
.
巴布亚新几内亚
|
公平地说,这可能不是无损PNG格式的最佳文件。然后我可以在Chrome中打开文件,很难看到区别:

dav1d AVIF解码库和davf工具
大多数嵌入式系统可能只使用AVIF解码/渲染,为此,我们可以构建dav1d C库:
1.
2.
3.
4.
5.
6.
|
git
克隆
https
:
/ / code.videolan.org/videolan/dav1d
光盘
dav1d
/
苏多
恰当的
安装
nasm
介子
忍者
-
构建
mkdir
构建
& &
光盘
构建
介子
.
.
忍者
|
与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中构建它的方式:
1.
2.
3.
4.
|
git
克隆
--
递归
-
子
--
递归
https
:
/ / github.com/link-u/davif
光盘
davif
cmake
.
使
|
从AVIF到PNG的转换要比另一种方式快得多,更精确地说,要快10倍以上。
1.
2.
3.
4.
5.
6.
7.
8.
9
|
时间
.
/
davif
-
我
cnxsoft
-
标志
.
阿维夫
-
o
cnxsoft
-
标志
.
巴布亚新几内亚
[
2021
/
02
/
23
11
:
51
:
15
信息
]
davif
[
2021
/
02
/
23
11
:
51
:
15
调试
]
-
dav1d
版本
:
0.8.0
-
34
-
g7424f8e
[
2021
/
02
/
23
11
:
51
:
15
信息
]
解码
:
cnxsoft
-
标志
.
阿维夫
->
cnxsoft
-
标志
.
巴布亚新几内亚
[
2021
/
02
/
23
11
:
51
:
15
信息
]
解码
:
cnxsoft
-
标志
.
阿维夫
->
cnxsoft
-
标志
.
巴布亚新几内亚
在
93
[
女士
]
真正的
0m0.392s
用户
0m0.431s
sys
0 m0.012s
|
因为所有东西都是用C和汇编器编写的,所以移植到资源受限的嵌入式系统可能会更容易。
值得注意的是,AVIF并不是唯一一种新的图片格式,JPEG XL也在开发中,但它可能需要更长的时间才能集成到web浏览器中。您将找到JPEG XL的参考实现在Gitlab.讨论了AVIF与JPEG XL的区别编码。苏论坛和Cloudinary博客AVIF提供更好的压缩,但JPEG XL解码器,尤其是编码器应该更快,并支持更大的分辨率,而AVIF仅限于3840×2160,这似乎有些奇怪.JPEG XL没有版税,并且与JPEG兼容。

Jean Luc在2010年开始从www.yabo188.vip事CNX软件的兼职工作,之后辞去软件工程经理的工作,开始撰写每日新闻,并在2011年晚些时候全职撰写评论。
有趣的文章。
编码器已经做了videolan ?
Image亚博体育官下载Magick怎么样?这个工具是多平台的,通常很适合管理所有的图像编码。
那么hevc和av亚博体育官下载1之间的比较呢。
Hevc存在于所有的ios设备中,因此它关系到很多人。
Rav1e编码器托管在XIPH.org基金会GITHUB帐户上。
dav1d解码器在VideoLAN网站上。
看起来ImageMagick也可以与AVIF一起工作,但您需要一个真正最新的版本(7.0.25)。参见下面的tkaiser链接。
HEVC和AV1是视频编解码器。
很可能是关于HEIC和AVIF的。亚博体育官下载
感谢这些精准度。哦,是的,我可能是说heic和avif
>Image亚博体育官下载Magick呢?
祝你好运从源代码构建
AVIF不限于4K,只有基线配置文件是,甚至可以超过它。这是为了确保与解码AV1视频的播放器的兼容性。更多的在这里https://aomediacodec.github.io/av1-avif/#baseline-侧面图