? ? ?NSURL*videoUrl = mediaURL;
?(格式) media = @"file:///private/var/mobile/Containers/Data/Application/0541F390-33AE-4910-BFC3-30819DF8317C/tmp/0A809814-E89A-42D9-9760-F9E0FDDA9B4A.MOV"
? ? ? ? ? ? ? ? /**
?? ? ? ? ? ? ? ? *? mov格式轉(zhuǎn)mp4格式
?? ? ? ? ? ? ? ? */
? ? ? ? ? ? ?AVURLAsset*avAsset = [AVURLAssetURLAssetWithURL:[NSURLfileURLWithPath:videoUrl.absoluteString]options:nil];
? ? AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:avAsset presetName:AVAssetExportPresetMediumQuality];
? ? NSArray*compatiblePresets = [AVAssetExportSessionexportPresetsCompatibleWithAsset:avAsset];
? ? ? ? ? ? ? ? /**
?? ? ? ? ? ? ? ? AVAssetExportPresetMediumQuality 表示視頻的轉(zhuǎn)換質(zhì)量懦砂,
?? ? ? ? ? ? ? ? */
? ? ? ? ? ? ? ? if([compatiblePresetscontainsObject:AVAssetExportPresetMediumQuality]) {
? ? ? ? ? ? ? ? ? ? NSURL*newVideoUrl ;//一般.mp4
? ? ? ? ? ? ? ? ? ? NSDateFormatter *formater = [[NSDateFormatter alloc] init];//用時(shí)間給文件全名蜒犯,以免重復(fù),在測(cè)試的時(shí)候其實(shí)可以判斷文件是否存在若存在荞膘,則刪除罚随,重新生成文件即可
? ? ? ? ? ? ? ? ? ? [formatersetDateFormat:@"yyyy-MM-dd-HH:mm:ss"];
? ? ? ? ? ? ? ? ? ? newVideoUrl = [NSURL fileURLWithPath:[NSHomeDirectory() stringByAppendingFormat:@"/Documents/output-%@.mp4", [formater stringFromDate:[NSDate date]]]] ;
? ? ? ? ? ? ? ? ? ? exportSession.outputURL= newVideoUrl;
? ? ? ? ? ? ? ? ? ? //要轉(zhuǎn)換的格式,這里使用 MP4
? ? ? ? ? ? ? ? ? ? exportSession.outputFileType=AVFileTypeMPEG4;
? ? ? ? ? ? ? ? ? ? //轉(zhuǎn)換的數(shù)據(jù)是否對(duì)網(wǎng)絡(luò)使用優(yōu)化
? ? ? ? ? ? ? ? ? ? exportSession.shouldOptimizeForNetworkUse=YES;
? ? ? ? ? ? ? ? ? ? //異步處理開始轉(zhuǎn)換
? ? ? ? ? ? ? ? ? ? [exportSessionexportAsynchronouslyWithCompletionHandler:^(void)
?? ? ? ? ? ? ? ? ? ? {
?? ? ? ? ? ? ? ? ? ? ? ? //轉(zhuǎn)換狀態(tài)監(jiān)控
?? ? ? ? ? ? ? ? ? ? ? ? switch(exportSession.status) {
?? ? ? ? ? ? ? ? ? ? ? ? ? ? case AVAssetExportSessionStatusUnknown:
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NSLog(@"AVAssetExportSessionStatusUnknown");
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
?? ? ? ? ? ? ? ? ? ? ? ? ? ? case AVAssetExportSessionStatusWaiting:
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NSLog(@"AVAssetExportSessionStatusWaiting");
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
?? ? ? ? ? ? ? ? ? ? ? ? ? ? case AVAssetExportSessionStatusExporting:
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NSLog(@"AVAssetExportSessionStatusExporting");
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
?? ? ? ? ? ? ? ? ? ? ? ? ? ? case AVAssetExportSessionStatusFailed:
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NSLog(@"AVAssetExportSessionStatusFailed");
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
?? ? ? ? ? ? ? ? ? ? ? ? ? ? case AVAssetExportSessionStatusCancelled:
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NSLog(@"AVAssetExportSessionStatusCancelled");
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
?? ? ? ? ? ? ? ? ? ? ? ? ? ? case AVAssetExportSessionStatusCompleted:
?? ? ? ? ? ? ? ? ? ? ? ? ? ? {
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //轉(zhuǎn)換完成
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NSLog(@"AVAssetExportSessionStatusCompleted");
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
?? ? ? ? ? ? ? ? ? ? ? ? ? ? }
?? ? ? ? ? ? ? ? ? ? ? ? }
?? ? ? ? ? ? ? ? ? ? }];
? ? ? ? ? ? ? ? }