簡體   English   中英

AVAssetWriter 編解碼器類型 hevc

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM