视频转码压缩

获取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];

}

}

}];

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容