我尝试使用AVAssetWriter将H264视频转码为HEVC,但在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 :(得分:1)
您可以通过以下代码获取iphone型号
+ (NSString *)deviceModel{
struct utsname systemInfo;
uname(&systemInfo);
return [NSString stringWithCString: systemInfo.machine encoding: NSUTF8StringEncoding];
}
确定iPhone6S是否禁用了H265编码,而iPhone7以上是否启用了H265编码
答案 1 :(得分:0)
我最终还是这样
if #available(iOS 11.0, *), AVCaptureVideoDataOutput().availableVideoCodecTypes.contains(.hevc) {
//use .hevc settings here
} else {
//use .h264 settings here
}
如果您的应用面向#available
检查以使编译器满意