iOS h264转码

新的iOS硬件默认的编码是h265,很多浏览器不支持很尴尬,所以需要转换为h264
视频录制可以输出file格式和data格式,data格式用writer可以规定写出的编码
file格式默认的输出是和硬件相关,iphone7以后都是h265,看了很多网上的转码都很麻烦,最后查apple官网看到一个api,挺好用

_fileOutput = [[AVCaptureMovieFileOutput alloc]init];
_fileOutput.movieFragmentInterval = kCMTimeInvalid;

if ([_session canAddOutput:_fileOutput]) {
    [self.session beginConfiguration];
    [self.session addOutput:_fileOutput];
    self.session.sessionPreset = AVCaptureSessionPresetHigh;
    AVCaptureConnection* connection = [_fileOutput connectionWithMediaType:AVMediaTypeVideo];
    if (connection.isVideoStabilizationSupported) {
        connection.preferredVideoStabilizationMode = AVCaptureVideoStabilizationModeAuto;
    }
    if (@available(iOS 11.0, *)) {
        if ([_fileOutput.availableVideoCodecTypes containsObject:AVVideoCodecTypeH264]) {
            // Use the H.264 codec to encode the video.
            [_fileOutput setOutputSettings:@{AVVideoCodecKey: AVVideoCodecTypeH264} forConnection:connection];
        }
    } else {
        // Fallback on earlier versions
    }
    [self.session commitConfiguration];
}

注意connection一定要对,不然无法运行
api从iOS11开始支持,查了下官网,截止发文时iOS11以下不到8%,马上又要更新iOS13,相信很快iOS11以下会更少,所以我觉得是可以抛弃的

你可能感兴趣的:(iOS h264转码)