【问题标题】:AVAssetWriter codec type hevcAVAssetWriter 编解码器类型 hevc
【发布时间】:2018-10-11 19:26:11
【问题描述】:

我尝试使用 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

【问题讨论】:

    标签: ios avfoundation avassetwriter hevc avassetwriterinput


    【解决方案1】:

    我最终是这样做的

    if #available(iOS 11.0, *),  AVCaptureVideoDataOutput().availableVideoCodecTypes.contains(.hevc) {
        // use .hevc settings here
    } else {
        // use .h264 settings here
    }
    

    如果您的应用面向 ,则需要检查 #available 以使编译器满意

    【讨论】:

    • 在 iPhone6 上仍然会失败
    • 这在某些情况下会给出一个空数组,所以总是失败
    【解决方案2】:

    您可以通过以下代码获取iPhone型号:

    + (NSString *) deviceModel {
        struct utsname systemInfo;
        uname(&systemInfo);
    
        return [NSString stringWithCString: systemInfo.machine encoding: NSUTF8StringEncoding];
    }
    

    判断 iPhone 6S 是否禁用 H265 编码,iPhone7 是否启用 H265 编码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-27
      • 2015-05-31
      • 2013-12-14
      相关资源
      最近更新 更多