Тип кодека AVAssetWriter hevc
Я пытаюсь перекодировать видео H264 в HEVC с помощью AVAssetWriter, и это не удается на iPhone 6s. Предположительно, iPhone 6s поддерживает HEVC для транскодирования, а не кодирования видео в реальном времени. Тот же код работает на iPhone 7 и выше. Если iPhone 6s не поддерживает кодек HEVC, как мы можем программно определить поддерживаемые кодеки во время выполнения?
let bitrate = trackBitrate/5
let trackDimensions = trackSize
let compressionSettings: [String: Any] = [
AVVideoAverageBitRateKey: bitrate,
AVVideoMaxKeyFrameIntervalKey: 30,
AVVideoProfileLevelKey: kVTProfileLevel_HEVC_Main_AutoLevel
]
var videoSettings: [String : Any] = [
AVVideoWidthKey: trackDimensions.width,
AVVideoHeightKey: trackDimensions.height,
AVVideoCompressionPropertiesKey: compressionSettings
]
videoSettings[AVVideoCodecKey] = AVVideoCodecType.hevc
0 ответов
Я так и сделал
if #available(iOS 11.0, *), AVCaptureVideoDataOutput().availableVideoCodecTypes.contains(AVVideoCodecType.h264) {
//use .hvec settings here
} else {
//use .h264 settings here
}
#available
проверка необходима, чтобы компилятор был доволен, если ваше приложение ориентировано на
Вы можете получить модель iphone по следующему коду
+ (NSString *)deviceModel{
struct utsname systemInfo;
uname(&systemInfo);
return [NSString stringWithCString: systemInfo.machine encoding: NSUTF8StringEncoding];
}
и определите, отключает ли iPhone6S кодирование H265, а iPhone7 выше включает кодирование H265