Тип кодека 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

Другие вопросы по тегам