Saturday 15 May 2010

ios - UIStatusBar become red after using AVAssetExportSession for UIImagePickerController media conversion -



ios - UIStatusBar become red after using AVAssetExportSession for UIImagePickerController media conversion -

i converting .mov video uiimagepickercontroller .mp4 format using avassetexportsession. 1 time conversion completed send info server. works fine, except status bar become reddish , pulsing after transmission completed. if set app in background , open again, status bar returns normal status again.

this think piece of code causes behavior:

//i took video __block nsstring *messagetype; __block nsdata *messagedata; __block nsstring *messagetext; [...] nsurl *url = [info objectforkey:uiimagepickercontrollermediaurl]; avurlasset *avasset = [avurlasset urlassetwithurl:url options:nil]; nsarray *compatiblepresets = [avassetexportsession exportpresetscompatiblewithasset:avasset]; nsstring *videopath = nil; if ([compatiblepresets containsobject:avassetexportpresetlowquality]) { avassetexportsession *exportsession = [[avassetexportsession alloc]initwithasset:avasset presetname:avassetexportpresetpassthrough]; videopath = [[nstemporarydirectory() stringbyappendingpathcomponent:videodirectory]stringbyappendingpathcomponent:tempvideofilename]; exportsession.outputurl = [nsurl fileurlwithpath:videopath]; nslog(@"videopath of mp4 file = %@",videopath); // path of .mp4 file exportsession.outputfiletype = avfiletypempeg4; [exportsession exportasynchronouslywithcompletionhandler:^{ switch ([exportsession status]) { case avassetexportsessionstatusfailed:{ nslog(@"export failed: %@", [[exportsession error] localizeddescription]); [picker dismissviewcontrolleranimated:yes completion:^{ [svprogresshud showerrorwithstatus:[[exportsession error] localizeddescription]]; }]; } break; case avassetexportsessionstatuscancelled: nslog(@"export canceled"); break; case avassetexportsessionstatuscompleted:{ messagedata = [nsdata datawithcontentsofurl:[nsurl fileurlwithpath:videopath]]; messagetext = videopath; messagetype = kmessagetypevideo; // method sends asynchronously info server [self sendmediatype:messagetype messagedata:messagedata messagetext:messagetext]; [picker dismissviewcontrolleranimated:yes completion:null]; } break; default: break; } }]; }

is there way avoid appearance of reddish status bar or @ to the lowest degree way should utilize create disappear?

it turns out in way recording session of uiimagepickercontroller went in conflict avassetexportsession.

i resolved issue converting video after having dismissed uiimagepicker controller:

-(void)imagepickercontroller:(uiimagepickercontroller *)picker didfinishpickingmediawithinfo:(nsdictionary *)info{ nsstring *mediatype = [info objectforkey: uiimagepickercontrollermediatype]; if (cfstringcompare ((__bridge_retained cfstringref) mediatype, kuttypeimage, 0) == kcfcompareequalto) { [....] } else{ //took video nsurl *url = [info objectforkey:uiimagepickercontrollermediaurl]; [picker dismissviewcontrolleranimated:yes completion:^{ [self convertandsendvideo:url]; }]; } } -(void)convertandsendvideo:(nsurl *)url{ __block nsstring *messagetype; __block nsdata *messagedata; __block nsstring *messagetext; avurlasset *avasset = [avurlasset urlassetwithurl:url options:nil]; nsarray *compatiblepresets = [avassetexportsession exportpresetscompatiblewithasset:avasset]; nsstring *videopath = nil; if ([compatiblepresets containsobject:avassetexportpresetlowquality]) { __block avassetexportsession *exportsession = [[avassetexportsession alloc]initwithasset:avasset presetname:avassetexportpresetpassthrough]; videopath = [[nstemporarydirectory() stringbyappendingpathcomponent:videodirectory]stringbyappendingpathcomponent:tempvideofilename]; exportsession.outputurl = [nsurl fileurlwithpath:videopath]; nslog(@"videopath of mp4 file = %@",videopath); // path of .mp4 file exportsession.outputfiletype = avfiletypempeg4; [exportsession exportasynchronouslywithcompletionhandler:^{ switch ([exportsession status]) { case avassetexportsessionstatusfailed:{ nslog(@"export failed: %@", [[exportsession error] localizeddescription]); [svprogresshud showerrorwithstatus:[[exportsession error] localizeddescription]]; } break; case avassetexportsessionstatuscancelled: nslog(@"export canceled"); break; case avassetexportsessionstatuscompleted:{ messagedata = [nsdata datawithcontentsofurl:[nsurl fileurlwithpath:videopath]]; messagetext = videopath; messagetype = kmessagetypevideo; [self sendmediatype:messagetype messagedata:messagedata messagetext:messagetext]; } break; default: break; } }]; } }

ios objective-c uiimagepickercontroller uistatusbar avassetexportsession

No comments:

Post a Comment