视频转码压缩

获取AVURLAsset:

__block AVURLAsset *videoUrlAsset = nil; //资源信息获取

PHAsset  *asset = nil;//视频来源,PhotoKit相册资源

NSArray *resources = [PHAssetResource assetResourcesForAsset:asset];

PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init];

options.deliveryMode = PHVideoRequestOptionsDeliveryModeAutomatic;

options.version = PHImageRequestOptionsVersionCurrent;

[[PHImageManager defaultManager] requestAVAssetForVideo:asset options:options resultHandler:^(AVAsset * _Nullable asset, AVAudioMix * _Nullable audioMix, NSDictionary * _Nullable info) {

videoUrlAsset = (AVURLAsset*)asset;

}];

获取到AV资源类之后,获取本地路径

//保存至沙盒路径

NSString *pathDocuments = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];

NSString *videoPath = [NSString stringWithFormat:@"%@/jdShowVideos", pathDocuments];

if (![fileManager fileExistsAtPath:videoPath]) {

[fileManager createDirectoryAtPath:videoPath withIntermediateDirectories:NO attributes:nil error:nil];

}

//转码配置

AVAssetExportSession *exportSession= [[AVAssetExportSession alloc] initWithAsset:self.videoUrlAsset presetName:AVAssetExportPresetLowQuality];

exportSession.shouldOptimizeForNetworkUse = YES;

exportSession.outputURL = [NSURL fileURLWithPath:self.videoFilePath];

exportSession.outputFileType = AVFileTypeMPEG4;

[exportSession exportAsynchronouslyWithCompletionHandler:^{

int exportStatus = exportSession.status;

switch (exportStatus)

{

case AVAssetExportSessionStatusFailed:

{

break;

}

case AVAssetExportSessionStatusCompleted:

{

NSData *dataVideo = [NSData dataWithContentsOfFile:self.videoFilePath options:NSDataReadingMappedIfSafe error:nil];

}

}

}];

}

你可能感兴趣的:(视频转码压缩)