When recording video using the Uiimagepickercontroller system controller, the default generated format is MOV, and if you want to turn it into MP4 format, we need to use avassetexportsession;
Video quality supported for conversion: Low, Medium, high, 640*480,720p,1080p, etc.
The following code fragment conversion
- (void) Mov2mp4: (Nsurl *) movurl{Avurlasset*avasset =[Avurlasset Urlassetwithurl:movurl Options:nil]; Nsarray*compatiblepresets =[Avassetexportsession Exportpresetscompatiblewithasset:avasset]; /** Avassetexportpresetmediumquality indicates the quality of video conversion,*/ if([compatiblepresets containsobject:avassetexportpresetmediumquality]) {avassetexportsession*exportsession =[[Avassetexportsession alloc] Initwithasset:avasset presetname:avassetexportpresetmediumquality]; //convert complete saved file pathNSString * Resultpath = [Nshomedirectory () Stringbyappendingformat:@"/documents/output-%@.mp4",@"CVT"]; Exportsession.outputurl=[Nsurl Fileurlwithpath:resultpath]; //to convert the format, use MP4 hereExportsession.outputfiletype =AVFileTypeMPEG4; //whether the converted data is optimized for network useExportsession.shouldoptimizefornetworkuse =YES; //asynchronous processing begins conversion[Exportsession exportasynchronouslywithcompletionhandler:^ (void) { //Conversion Status Monitoring Switch(exportsession.status) { CaseAvassetexportsessionstatusunknown:nslog (@"Avassetexportsessionstatusunknown"); Break; CaseAvassetexportsessionstatuswaiting:nslog (@"avassetexportsessionstatuswaiting"); Break; CaseAvassetexportsessionstatusexporting:nslog (@"avassetexportsessionstatusexporting"); Break; CaseAvassetexportsessionstatusfailed:nslog (@"avassetexportsessionstatusfailed"); Break; CaseAvassetexportsessionstatuscancelled:nslog (@"avassetexportsessionstatuscancelled"); Break; Caseavassetexportsessionstatuscompleted: {//Conversion CompleteNSLog (@"avassetexportsessionstatuscompleted"); //test use, save in Mobile albumAlassetslibrary *assetlibrary =[[Alassetslibrary alloc] init]; [Assetlibrary WriteVideoAtPathToSavedPhotosAlbum:exportSession.outputURL Completionblock:^ (Nsurl *asseturl, Nserror *error) { if(Error) {NSLog (@"%@", error); } }]; Break; } } }]; } }
Full invocation and Conversion code
#import <AssetsLibrary/AssetsLibrary.h>#import<MobileCoreServices/MobileCoreServices.h>#import<AVFoundation/AVFoundation.h>@interface Viewcontroller ()<UIImagePickerControllerDelegate,UINavigationControllerDelegate>@end @implementation Viewcontroller- (void) viewdidload {[Super viewdidload]; }-(ibaction) STARTCAMPVD: (ID) sender {uiimagepickercontroller*pickercon =[[Uiimagepickercontroller alloc]init]; Pickercon.sourcetype=Uiimagepickercontrollersourcetypecamera; Pickercon.mediatypes= @[(NSString *) Kuttypemovie];//setting up the camera for videoPickercon.cameradevice = Uiimagepickercontrollercameradevicefront;//set camera rear cameraPickercon.videomaximumduration =6;//Maximum shooting Timepickercon.videoquality = uiimagepickercontrollerqualitytype640x480;//Shooting Qualitypickercon.allowsediting = NO;//whether it can be editedPickercon.Delegate=Self ; [Self Presentviewcontroller:pickercon animated:yes completion:nil];}- (void) Imagepickercontroller: (Uiimagepickercontroller *) Picker Didfinishpickingmediawithinfo: (NSDictionary *) Info {NSLog (@"video recording Complete ..."); NSLog (@"%@", info); [Self mov2mp4:[info objectforkey:uiimagepickercontrollermediaurl]]; [Self dismissviewcontrolleranimated:yes completion:nil]; }- (void) Mov2mp4: (Nsurl *) movurl{Avurlasset*avasset =[Avurlasset Urlassetwithurl:movurl Options:nil]; Nsarray*compatiblepresets =[Avassetexportsession Exportpresetscompatiblewithasset:avasset]; /** Avassetexportpresetmediumquality indicates the quality of video conversion,*/ if([compatiblepresets containsobject:avassetexportpresetmediumquality]) {avassetexportsession*exportsession =[[Avassetexportsession alloc] Initwithasset:avasset presetname:avassetexportpresetmediumquality]; //convert complete saved file pathNSString * Resultpath = [Nshomedirectory () Stringbyappendingformat:@"/documents/output-%@.mp4",@"CVT"]; Exportsession.outputurl=[Nsurl Fileurlwithpath:resultpath]; //to convert the format, use MP4 hereExportsession.outputfiletype =AVFileTypeMPEG4; //whether the converted data is optimized for network useExportsession.shouldoptimizefornetworkuse =YES; //asynchronous processing begins conversion[Exportsession exportasynchronouslywithcompletionhandler:^ (void) { //Conversion Status Monitoring Switch(exportsession.status) { CaseAvassetexportsessionstatusunknown:nslog (@"Avassetexportsessionstatusunknown"); Break; CaseAvassetexportsessionstatuswaiting:nslog (@"avassetexportsessionstatuswaiting"); Break; CaseAvassetexportsessionstatusexporting:nslog (@"avassetexportsessionstatusexporting"); Break; CaseAvassetexportsessionstatusfailed:nslog (@"avassetexportsessionstatusfailed"); Break; CaseAvassetexportsessionstatuscancelled:nslog (@"avassetexportsessionstatuscancelled"); Break; Caseavassetexportsessionstatuscompleted: {//Conversion CompleteNSLog (@"avassetexportsessionstatuscompleted"); //test use, save in Mobile albumAlassetslibrary *assetlibrary =[[Alassetslibrary alloc] init]; [Assetlibrary WriteVideoAtPathToSavedPhotosAlbum:exportSession.outputURL Completionblock:^ (Nsurl *asseturl, Nserror *error) { if(Error) {NSLog (@"%@", error); } }]; Break; } } }]; } }- (void) Imagepickercontrollerdidcancel: (Uiimagepickercontroller *) Picker {[Picker Dismissviewcontrolleranimated:yes completion:^{}]; NSLog (@"video recording canceled ..."); }
IOS recording Video mov format turn MP4