获取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];
}
}
}];
}
网友评论