我的问题是我想使用AVVideoCodecHEVC
。我知道它只在iOS 11中可用,但是没有A10芯片的设备不支持它。
因此,如果使用没有if #available(iOS 11.0, *) { let self.codec = AVVideoCodecHEVC }
芯片的iPhone 6这样的设备,使用A10将引发A10错误。有没有人能弄清楚运行iOS 11的设备是否能支持HEVC?
发布于 2018-06-20 20:16:30
您可以检查iOS设备或Mac是否具有使用VideoToolbox的硬件编码支持:
/// Whether or not the current device has an HEVC hardware encoder.
public static let hasHEVCHardwareEncoder: Bool = {
let spec: [CFString: Any]
#if os(macOS)
spec = [ kVTVideoEncoderSpecification_RequireHardwareAcceleratedVideoEncoder: true ]
#else
spec = [:]
#endif
var outID: CFString?
var properties: CFDictionary?
let result = VTCopySupportedPropertyDictionaryForEncoder(width: 1920, height: 1080, codecType: kCMVideoCodecType_HEVC, encoderSpecification: spec as CFDictionary, encoderIDOut: &outID, supportedPropertiesOut: &properties)
if result == kVTCouldNotFindVideoEncoderErr {
return false // no hardware HEVC encoder
}
return result == noErr
}()
一种更高级的检查方法是查看AVAssetExportSession
是否支持HEVC预置:
AVAssetExportSession.allExportPresets().contains(AVAssetExportPresetHEVCHighestQuality)
有关更多信息,请参见“与HEIF和HEVC合作”,来自WWDC 2017。
发布于 2018-10-29 07:26:55
当使用iOS 11或更高版本时,这些设备可以以HEIF或HEVC格式捕获媒体:
iPhone 7 or iPhone 7 Plus or later
iPad (6th generation)
iPad Pro (10.5 inch)
iPad Pro 12.9-inch (2nd generation)
发布于 2019-12-25 00:04:10
使用AVFoundation:
let isHEVC = AVOutputSettingsAssistant.availableOutputSettingsPresets().contains(.hevc3840x2160)
来自AVOutputSettingsPreset枚举的...or其他预置
https://stackoverflow.com/questions/50956097
复制相似问题