#pragma mark-helper
-(nsurl *) Convert2mp4: (nsurl *) movurl {
nsurl *mp4url = nil;
avurlasset *avasset = [avurlasset urlassetwithurl: Movurl options:Nil ];
nsarray *compatiblepresets = [avassetexportsession exportpresetscompatiblewithasset: Avasset];
if ([Compatiblepresets containsobject:avassetexportpresethighestquality]) {
avassetexportsession *exportsession = [[avassetexportsession alloc]initwithasset: Avasset
presetname:avassetexportpresethighestquality];
Mp4url = [movurl copy];
Mp4url = [Mp4url urlbydeletingpathextension];
Mp4url = [Mp4url urlbyappendingpathextension:@ "mp4"];
Exportsession. Outputurl = mp4url;
Exportsession. shouldoptimizefornetworkuse = YES;
Exportsession. outputfiletype = AVFileTypeMPEG4;
dispatch_semaphore_t wait = dispatch_semaphore_create(0L);
[Exportsession exportasynchronouslywithcompletionhandler: ^{
Switch ([exportsession status]) {
case avassetexportsessionstatusfailed: {
NSLog(@ "failed, error:%@.") , Exportsession. error);
} break;
case avassetexportsessionstatuscancelled: {
NSLog(@ "cancelled.") );
} break;
case avassetexportsessionstatuscompleted: {
NSLog(@ "completed.") );
} break;
default: {
NSLog(@ "others.") );
} break;
}
dispatch_semaphore_signal(wait);
}];
long timeout = dispatch_semaphore_wait(Wait, dispatch_time_forever);
if (timeout) {
NSLog(@ "timeout.") );
}
if (wait) {
//dispatch_release (wait);
wait = nil;
}
}
return mp4url;
}
Convert2mp4 Code Snippet