[英]AVAssetWriter codec type hevc
我嘗試使用 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
我最終這樣做了
if #available(iOS 11.0, *), AVCaptureVideoDataOutput().availableVideoCodecTypes.contains(.hevc) {
// use .hevc settings here
} else {
// use .h264 settings here
}
如果您的應用面向 < iOS 11,則需要#available
檢查以使編譯器滿意
您可以通過以下代碼獲取iPhone型號:
+ (NSString *) deviceModel {
struct utsname systemInfo;
uname(&systemInfo);
return [NSString stringWithCString: systemInfo.machine encoding: NSUTF8StringEncoding];
}
並確定 iPhone 6S 是否禁用 H265 編碼和 iPhone7 以上啟用 H265 編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.