我正在尝试使用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发布于 2019-01-03 19:54:59
我最终是这样做的
if #available(iOS 11.0, *), AVCaptureVideoDataOutput().availableVideoCodecTypes.contains(.hevc) {
// use .hevc settings here
} else {
// use .h264 settings here
}如果您的应用程序以< iOS 11为目标,则需要进行#available检查以使编译器满意
发布于 2019-09-07 07:27:23
您可以通过以下代码获取iPhone模型:
+ (NSString *) deviceModel {
struct utsname systemInfo;
uname(&systemInfo);
return [NSString stringWithCString: systemInfo.machine encoding: NSUTF8StringEncoding];
}并确定iPhone 6S是否禁用H265编码,上面的iPhone7是否启用H265编码。
https://stackoverflow.com/questions/52767533
复制相似问题