libheif 的封装 + Xcode 项目。 使得 Carthage 支持将 libheif 构建为 Apple 平台的框架。
此仓库也包含使用 libheif 的 CocoaPods 规范文件。
libheif 可通过 Carthage(通过此仓库)获得。
github "SDWebImage/libheif-Xcode"
libheif 可通过 CocoaPods 获得。
pod 'libheif'
libheif 可通过 Swift Package Manager 获得。
let package = Package(
dependencies: [
.package(url: "https://github.com/SDWebImage/libheif-Xcode.git", from: "1.6.1")
]
)
libheif 本身不是一个完整功能的解码器,而是一个抽象层。 它需要 libde265 来支持 HEIF 解码,以及 x265 来支持 HEIF 编码。
注意:由于大多数人使用此库是为了 HEIF 解码,并且 x265
使用 GPLv2 许可,我们仅将 libheif 与 libde265-Xcode 集成在 Carthage/SwiftPM 包管理器上。 如果您需要 x265 支持 HEIF 编码,请仔细阅读以下内容。
对于 CocoaPods 用户,您可以使用 libx265
子规范来集成 x265 编解码器支持 HEIF 编码。
pod 'libheif', :subspecs => ['libde265', 'libx265']
对于 Carthage 用户,导出环境变量(如果需要,可以使用 bash profile 或 xcconfig)HAVE_X265=1
,并修改 carthage 的 xcconfig 中的 GCC_PREPROCESSOR_DEFINITIONS
进行构建。
您可以使用 shell 脚本来启动 carthage,例如通过 carthage_build_with_x265.sh build
运行。
#!/bin/bash -e
xcconfig=$(mktemp /tmp/static.xcconfig.XXXXXX)
echo "GCC_PREPROCESSOR_DEFINITIONS = $(inherited) HAVE_X265=1" >> $xcconfig
export XCODE_XCCONFIG_FILE="$xcconfig"
carthage "$@"
对于 SPM 用户,导出环境变量(如果需要,可以使用 bash profile 或 xcconfig)HAVE_X265=1
,并使用 xcodebuild
或 swift build
进行构建。
mv libheif.xcodeproj libheif.xcodeproj.bak
HAVE_X265=1 xcodebuild build -scheme libheif -sdk macosx -destination "generic/platform=macOS"
从 v1.7.0 开始,libheif 增加了对 AV1 图像文件格式 (AVIF) 的支持。 为了保持组件的功能性,我们仅通过 libaom
子规范在 CocoaPods 中集成 AVIF 支持。
pod 'libheif', :subspecs => ['libaom']
从 v1.9.0 开始,libheif 增加了使用 dav1d 作为 AVIF 解码器编解码器的支持。
要使用 dav1d 作为解码器编解码器,请使用如下所示的子规范:
pod 'libheif', :subspecs => ['libdav1d']
从 v1.7.0 开始,libheif 增加了使用 libaom
作为默认 AVIF 编码器编解码器的支持。 但是,libaom 在大多数移动系统上的表现不是很好。
pod 'libheif', :subspecs => ['libaom']
还有另一个 AVIF 编码器编解码器,rav1e。 它从 v1.8.0 版本开始添加。 对于 CocoaPods,您可以选择通过 librav1e
子规范使用。
pod 'libheif', :subspecs => ['librav1e']
注意
pod 'libheif', :subspecs => ['libdav1d', 'librav1e']
# or if you prefer aom
pod 'libheif', :subspecs => ['libaom', 'librav1e']
libheif 从 v1.14.0 开始,增加了对使用 svt-av1 作为 AVIF 解码器和编码器编解码器的支持。
要使用 svt-av1 作为编码器和解码器编解码器,请使用如下所示的子规范:
pod 'libheif', :subspecs => ['svt-av1']
libheif 在 GNU Lesser General Public License 的条款下可用。 有关更多信息,请参见 LICENSE 文件。