运维日志您现在的位置是:首页 > 博客日志 > 运维日志

centos6编译安装libheif支持avif格式文件

<a href='mailto:'>微wx笑</a>的头像微wx笑 2022-05-03运维日志 1 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文件Ptr无知人生

libheif

项目地址:https://github.com/strukturag/libheif/ Ptr无知人生


Ptr无知人生

libheif is an ISO/IEC 23008-12:2017 HEIF and AVIF (AV1 Image File Format) file format decoder and encoder.Ptr无知人生

HEIF and AVIF are new image file formats employing HEVC (h.265) or AV1 image coding, respectively, for the best compression ratios currently possible.Ptr无知人生

libheif makes use of libde265 for HEIF image decoding and x265 for encoding. For AVIF, libaom, dav1d, or rav1e are used as codecs.Ptr无知人生

libheif 是 ISO/IEC 23008-12:2017 HEIF 和 AVIF(AV1 图像文件格式)文件格式解码器和编码器。Ptr无知人生

HEIF 和 AVIF 是分别采用 HEVC (h.265) 或 AV1 图像编码的新图像文件格式,以实现目前可能的最佳压缩比。Ptr无知人生

libheif 使用 libde265 进行 HEIF 图像解码,使用 x265 进行编码。对于 AVIF,使用 libaom、dav1d 或 rav1e 作为编解码器。Ptr无知人生


Ptr无知人生

也就是说 libheif 自身并不支持 AVIF,要支持AVIF,还需要再安装依赖的编解码器。Ptr无知人生


Ptr无知人生

libheif 的安装没什么问题,但是 libaom 就没有找到可用的安装帮助。Ptr无知人生


Ptr无知人生

libde265 的安装也是遇到问题。Ptr无知人生


Ptr无知人生

想使用yum安装,但是都没有可用的包。Ptr无知人生

可用的安装方法

只能是编译安装的方式了。Ptr无知人生

克隆或下载项目代码Ptr无知人生

git clone https://github.com/strukturag/libheif/

安装依赖的库和工具

可能需要安装的东西很多,因为安装一个东西,提示缺少某个或某些东西
Ptr无知人生

安装dav1d

想要支持AVIF, 需要安装 libaom, dav1d, rav1e 其中的一个,libaom没有找到,dav1d总算是找到了,并且成功安装应用上了。Ptr无知人生

要编译 dav1d 首先要安装 meson,参考:centos6安装mesonPtr无知人生


Ptr无知人生

安装 meson 之后,按照“https://github.com/strukturag/libheif/tree/master/third-party/dav1d.cmd”文件中的命令执行Ptr无知人生

 # 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 ..

说明Ptr无知人生

比如我是在“/opt/”目录下执行的“git clone”及后面的命令,那么执行安装以后,要执行以下命令:
Ptr无知人生

export PKG_CONFIG_PATH=/opt/dav1d/dist/lib64/pkgconfig

这个应该是在哪个目录下编译安装的,就指向哪里,不然的话,make的时候还是去原来那个目录找。Ptr无知人生

我前面就是编译完了,又移动到 libheif 的源码目录下,结果 make 的时候就出错了。Ptr无知人生


Ptr无知人生

安装x265

wget https://github.com/videolan/x265/archive/refs/tags/3.4.tar.gz

1.解压包,开始安装x265Ptr无知人生


Ptr无知人生

tar -xvf 3.4.tar.gz
cd x265-3.4/build/linux

2.安装编译依赖Ptr无知人生

yum -y install cmake

3.执行编译Ptr无知人生

cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local ../../source

4.安装Ptr无知人生

make && make install

注意:下面这步应该不用做,cmake 可以尝试不指定 -DCMAKE_INSTALL_PREFIX=/usr/local 参数Ptr无知人生

# 查找pkgconfig(编译安装的x265.pc位置不是系统默认里面) Ptr无知人生

也可在编译时指定用 PKG_CONFIG_PATH=/usr/lib64/lib/pkgconfig 指定Ptr无知人生

cp /usr/lib64/lib/pkgconfig/x265.pc /usr/local/lib/pkgconfig/Ptr无知人生

安装libde265

wget https://github.com/strukturag/libde265/releases/download/v1.0.7/libde265-1.0.7.tar.gz

1.解压包,开始安装libde265Ptr无知人生

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 可以尝试不指定参数Ptr无知人生

# 查找pkgconfig(编译安装的libde265.pc位置不是系统默认里面) Ptr无知人生

也可在编译时指定用 PKG_CONFIG_PATH=/usr/lib64/lib/pkgconfig 指定Ptr无知人生

cp /usr/lib64/lib/pkgconfig/libde265.pc /usr/local/lib/pkgconfig/Ptr无知人生


Ptr无知人生

编译安装libheif

./autogen.sh
./configure
make
make install #官方介绍没有这一句

说明Ptr无知人生

执行“./configure”后,要注意其输出,如下面的输出的最后一部分,看到“configure: dav1d decoder: yes”,说明配置是正确的,还有很多显示的是“no”,说明是缺少相关的库。Ptr无知人生

可以看到JPEG是yes,此时avif转JPEG功能是可用的;PNG是no,avif转png的功能就不可用。Ptr无知人生

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


Ptr无知人生

相关参考:Ptr无知人生

Ptr无知人生

centos6可用yum源repoPtr无知人生

Centos6安装devtoolset(高版本gcc) 这是个非常好的东西,节省了我很多的时间!Ptr无知人生

centos6安装cmake3.6.3Ptr无知人生

CMake Error: Could not find CMAKE_ROOT !!!  hash -r 是一个非常棒的命令!Ptr无知人生

centos6安装libiconvPtr无知人生

centos6安装mesonPtr无知人生


Centos-7.8-Mini安装libvips依赖jpeg tiff png webp heif扩展Ptr无知人生


Ptr无知人生

本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.com/blog/service/2022-05-03/1183.html

很赞哦! () 有话说 ()