centos6编译安装libheif支持avif格式文件
微wx笑 2022-05-03【运维日志】 2 0关键字: centos6 libheif avif
libheif 是 ISO/IEC 23008-12:2017 HEIF 和 AVIF(AV1 图像文件格式)文件格式解码器和编码器。
HEIF 和 AVIF 是分别采用 HEVC (h.265) 或 AV1 图像编码的新图像文件格式,以实现目前可能的最佳压缩比。
libheif 使用 libde265 进行 HEIF 图像解码,使用 x265 进行编码。对于 AVIF,使用 libaom、dav1d 或 rav1e 作为编解码器。
centos6编译安装libheif支持avif文件
libheif
项目地址:https://github.com/strukturag/libheif/
libheif is an ISO/IEC 23008-12:2017 HEIF and AVIF (AV1 Image File Format) file format decoder and encoder.
HEIF and AVIF are new image file formats employing HEVC (h.265) or AV1 image coding, respectively, for the best compression ratios currently possible.
libheif makes use of libde265 for HEIF image decoding and x265 for encoding. For AVIF, libaom, dav1d, or rav1e are used as codecs.
libheif 是 ISO/IEC 23008-12:2017 HEIF 和 AVIF(AV1 图像文件格式)文件格式解码器和编码器。
HEIF 和 AVIF 是分别采用 HEVC (h.265) 或 AV1 图像编码的新图像文件格式,以实现目前可能的最佳压缩比。
libheif 使用 libde265 进行 HEIF 图像解码,使用 x265 进行编码。对于 AVIF,使用 libaom、dav1d 或 rav1e 作为编解码器。
也就是说 libheif 自身并不支持 AVIF,要支持AVIF,还需要再安装依赖的编解码器。
libheif 的安装没什么问题,但是 libaom 就没有找到可用的安装帮助。
libde265 的安装也是遇到问题。
想使用yum安装,但是都没有可用的包。
可用的安装方法
只能是编译安装的方式了。
克隆或下载项目代码
git clone https://github.com/strukturag/libheif/
安装依赖的库和工具
可能需要安装的东西很多,因为安装一个东西,提示缺少某个或某些东西
安装dav1d
想要支持AVIF, 需要安装 libaom, dav1d, rav1e 其中的一个,libaom没有找到,dav1d总算是找到了,并且成功安装应用上了。
要编译 dav1d 首先要安装 meson,参考:centos6安装meson
安装 meson 之后,按照“https://github.com/strukturag/libheif/tree/master/third-party/dav1d.cmd”文件中的命令执行
# This install script was originally taken from libavif but might have been modified. : # If you want to use a local build of dav1d, you must clone the dav1d repo in this directory first, then enable CMake's AVIF_CODEC_DAV1D and AVIF_LOCAL_DAV1D options. : # The git SHA below is known to work, and will occasionally be updated. Feel free to use a more recent commit. : # The odd choice of comment style in this file is to try to share this script between *nix and win32. : # meson and ninja must be in your PATH. : # If you're running this on Windows, be sure you've already run this (from your VC2019 install dir): : # "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvars64.bat" git clone -b 1.0.0 --depth 1 https://code.videolan.org/videolan/dav1d.git cd dav1d : # macOS might require: -Dc_args=-fno-stack-check : # Build with asan: -Db_sanitize=address : # Build with ubsan: -Db_sanitize=undefined meson build --default-library=static --buildtype release --prefix "$(pwd)/dist" $@ ninja -C build ninja -C build install cd ..
说明
比如我是在“/opt/”目录下执行的“git clone”及后面的命令,那么执行安装以后,要执行以下命令:
export PKG_CONFIG_PATH=/opt/dav1d/dist/lib64/pkgconfig
这个应该是在哪个目录下编译安装的,就指向哪里,不然的话,make的时候还是去原来那个目录找。
我前面就是编译完了,又移动到 libheif 的源码目录下,结果 make 的时候就出错了。
安装x265
wget https://github.com/videolan/x265/archive/refs/tags/3.4.tar.gz
1.解压包,开始安装x265
tar -xvf 3.4.tar.gz cd x265-3.4/build/linux
2.安装编译依赖
yum -y install cmake
3.执行编译
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local ../../source
4.安装
make && make install
注意:下面这步应该不用做,cmake 可以尝试不指定 -DCMAKE_INSTALL_PREFIX=/usr/local 参数
# 查找pkgconfig(编译安装的x265.pc位置不是系统默认里面)
也可在编译时指定用 PKG_CONFIG_PATH=/usr/lib64/lib/pkgconfig 指定
cp /usr/lib64/lib/pkgconfig/x265.pc /usr/local/lib/pkgconfig/
安装libde265
wget https://github.com/strukturag/libde265/releases/download/v1.0.7/libde265-1.0.7.tar.gz
1.解压包,开始安装libde265
tar -xvf libde265-1.0.7.tar.gz cd libde265-1.0.7 ./autogen.sh ./configure \ --disable-dec265 \ --disable-sherlock265 \ --enable-log-info \ --enable-static \ --prefix=/usr/local make && make install
注意:下面这步应该不用做,./configure 可以尝试不指定参数
# 查找pkgconfig(编译安装的libde265.pc位置不是系统默认里面)
也可在编译时指定用 PKG_CONFIG_PATH=/usr/lib64/lib/pkgconfig 指定
cp /usr/lib64/lib/pkgconfig/libde265.pc /usr/local/lib/pkgconfig/
编译安装libheif
./autogen.sh ./configure make make install #官方介绍没有这一句
说明
执行“./configure”后,要注意其输出,如下面的输出的最后一部分,看到“configure: dav1d decoder: yes”,说明配置是正确的,还有很多显示的是“no”,说明是缺少相关的库。
可以看到JPEG是yes,此时avif转JPEG功能是可用的;PNG是no,avif转png的功能就不可用。
configure: --------------------------------------- configure: Multithreading: yes configure: Symbol visibility: yes configure: libaom decoder: configure: libaom encoder: configure: rav1e encoder: no configure: dav1d decoder: yes configure: libde265 decoder: no configure: libx265 encoder: no configure: JPEG output: yes configure: PNG output: no configure: GdkPixbuf2 loader: no configure: Examples: yes configure: Tests: (tests will cause 'visibility' to be turned off) configure: --------------------------------------- checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating examples/Makefile config.status: creating extra/Makefile config.status: creating fuzzing/Makefile config.status: creating gdk-pixbuf/Makefile config.status: creating go/Makefile config.status: creating gnome/Makefile config.status: creating scripts/Makefile config.status: creating tests/Makefile config.status: creating libheif/Makefile config.status: creating libheif/heif_version.h config.status: creating libheif.pc config.status: creating config.h config.status: executing libtool commands config.status: executing depfiles commands
相关参考:
Centos6安装devtoolset(高版本gcc) 这是个非常好的东西,节省了我很多的时间!
CMake Error: Could not find CMAKE_ROOT !!! hash -r 是一个非常棒的命令!
Centos-7.8-Mini安装libvips依赖jpeg tiff png webp heif扩展
本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/service/2022-05-03/1183.html