AVAssetWriter编解码器类型为hevc

时间:2018-10-11 19:26:11

标签: ios avfoundation avassetwriter hevc avassetwriterinput

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

2 个答案:

答案 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检查以使编译器满意