新的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以下会更少,所以我觉得是可以抛弃的