該庫旨在成為 AV1 圖像檔案格式的友好、可移植的 C 實現,如下所述:
https://aomediacodec.github.io/av1-avif/
它可以編碼和解碼所有 AV1 支援的 YUV 格式和位元深度(帶 alpha)。
建議您檢查/使用標記版本,而不是只使用主分支。隨著錯誤修復和功能添加,我們將定期建立新版本。
請參閱“examples”目錄中的範例。如果您已經在建置libavif
,請啟用 CMake 選項AVIF_BUILD_EXAMPLES
以便也建置並執行範例。
libavif
是大多數主要作業系統中的軟體包。
vcpkg install libavif
您也可以在發布頁面下載官方 Windows 二進位。
自製:
brew install libavif
Mac 連接埠:
sudo port install libavif
基於 Debian 的發行版:
sudo apt install libavif-dev
基於 Red Hat 的發行版:
sudo yum -y install libavif
對於「預設」MSYS2 UCRT64 環境:
pacman -S mingw-w64-ucrt-x86_64-libavif
建置 libavif 需要 CMake。
預設不啟用任何 AV1 編解碼器。無論您想要使用本機建置的版本還是系統安裝的版本(例如-DAVIF_CODEC_AOM=LOCAL
),都可以透過將以下任何 CMake 選項設為LOCAL
或SYSTEM
來啟用它們:
AVIF_CODEC_AOM
用於 libaom(編碼器和解碼器)AVIF_CODEC_DAV1D
用於 dav1d(解碼器)AVIF_CODEC_LIBGAV1
用於 libgav1(解碼器)AVIF_CODEC_RAV1E
用於 rav1e(編碼器)AVIF_CODEC_SVT
用於 SVT-AV1(編碼器)當設定為SYSTEM
時,這些函式庫(以其 C API 形式)必須在外部可用(可透過 CMake 的FIND_LIBRARY
發現)才能使用它們,或者如果libavif 是子CMake 項目,則在libavif 的CMake 腳本時,相應的CMake目標必須已存在被處決。
當設定為LOCAL
時,這些庫和其他依賴項將由 CMake 在本地拉取到已知良好的版本。
若要覆寫本機相依性版本或使用相依性的自訂構建,請先執行ext/
子目錄中的關聯腳本。
可以透過啟用AVIF_BUILD_TESTS
CMake 選項來建立一些用 C 編寫的測試。
其餘測試可以透過啟用AVIF_BUILD_TESTS
和AVIF_ENABLE_GTEST
CMake 選項來建置。它們需要 GoogleTest( -DAVIF_GTEST=SYSTEM
或-DAVIF_GTEST=LOCAL
)。
以下說明可用於建置 libavif 函式庫以及avifenc
和avifdec
工具。
要連結到已安裝的aom
、 libjpeg
和libpng
依賴函式庫(建議):
git clone -b v1.1.1 https://github.com/AOMediaCodec/libavif.git
cmake -S libavif -B libavif/build -DAVIF_CODEC_AOM=SYSTEM -DAVIF_BUILD_APPS=ON
cmake --build libavif/build --parallel
用於開發和調試目的,或產生完全靜態的二進位檔案:
git clone -b v1.1.1 https://github.com/AOMediaCodec/libavif.git
cmake -S libavif -B libavif/build -DBUILD_SHARED_LIBS=OFF -DAVIF_CODEC_AOM=LOCAL -DAVIF_LIBYUV=LOCAL -DAVIF_LIBSHARPYUV=LOCAL -DAVIF_JPEG=LOCAL -DAVIF_ZLIBPNG=LOCAL -DAVIF_BUILD_APPS=ON -DCMAKE_C_FLAGS_RELEASE= " -static " -DCMAKE_EXE_LINKER_FLAGS= " -static "
cmake --build libavif/build --parallel
靜態連結的avifenc.exe
和avifdec.exe
可以從發布頁面下載。
請檢查 wiki 以取得有關 libavif 的額外資源,例如發佈清單。
libavif 函式庫是用 C99 寫的。大多數測試都是用 C++14 寫的。
使用 clang-format 格式化頂級資料夾中的來源(首選clang-format-16
):
clang-format -style=file -i
apps/ * .c apps/ * / * .c apps/ * / * .cc apps/ * / * .h examples/ * .c
include/avif/ * .h src/ * .c src/ * .cc
tests/ * .c tests/ * / * .cc tests/ * / * .h
使用 cmake-format 格式化頂層資料夾中的 CMakeLists.txt 檔案:
cmake-format -i
CMakeLists.txt
tests/CMakeLists.txt
cmake/Modules/ * .cmake
contrib/CMakeLists.txt
contrib/gdk-pixbuf/CMakeLists.txt
android_jni/avifandroidjni/src/main/jni/CMakeLists.txt
根據 BSD 許可證發布。
Copyright 2019 Joe Drago. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1 . Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2 . Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.