objective c - Get Audio (mp3) From MOV File iOS -
how can extract audio (preferably .mp3) .mov file got user's camera roll?
i extract mov file here:
- (void) imagepickercontroller: (uiimagepickercontroller *) picker didfinishpickingmediawithinfo: (nsdictionary *) info { nsstring *mediatype = [info objectforkey: uiimagepickercontrollermediatype]; [self dismissviewcontrolleranimated:no completion:nil]; if (cfstringcompare ((__bridge_retained cfstringref)mediatype, kuttypemovie, 0) == kcfcompareequalto) { nsstring *filename = [[info objectforkey: uiimagepickercontrollermediaurl] path]; nsdata *data = [[nsdata alloc] initwithcontentsoffile:moviepath]; [self dismissviewcontrolleranimated:yes completion:nil]; } } please let me know if more code need provided think sufficient amount of information.
i have tried few things gotten absolutely nowhere. appreciated. thank you
i extract m4a file using following piece of code , write file application documents directory
-(void)imagepickercontroller:(uiimagepickercontroller *)picker didfinishpickingmediawithinfo:(nsdictionary *)info { avmutablecomposition *newaudioasset = [avmutablecomposition composition]; avmutablecompositiontrack *dstcompositiontrack = [newaudioasset addmutabletrackwithmediatype:avmediatypeaudio preferredtrackid:kcmpersistenttrackid_invalid]; // 1 - media type nsstring *mediatype = [info objectforkey: uiimagepickercontrollermediatype]; // 2 - dismiss image picker [self dismissviewcontrolleranimated:yes completion:nil]; // 3 - handle video selection if (cfstringcompare ((__bridge_retained cfstringref) mediatype, kuttypemovie, 0) == kcfcompareequalto) { videoasset = [avasset assetwithurl:[info objectforkey:uiimagepickercontrollermediaurl]]; // nslog(@"track = %@",[videoasset trackswithmediatype:avmediatypeaudio]); nsarray *trackarray = [videoasset trackswithmediatype:avmediatypeaudio]; if(!trackarray.count){ nslog(@"track returns empty array mediatype avmediatypeaudio"); return; } avassettrack *srcassettrack = [trackarray objectatindex:0]; //extract time range cmtimerange timerange = srcassettrack.timerange; nserror *err = nil; if(no == [dstcompositiontrack inserttimerange:timerange oftrack:srcassettrack attime:kcmtimezero error:&err]){ nslog(@"failed insert audio video mutable avcomposition track"); return; } //export avcompostion track destination path nsstring *documentsdirectory = [nssearchpathfordirectoriesindomains (nsdocumentdirectory, nsuserdomainmask, yes) objectatindex: 0]; nsstring *dstpath = [documentsdirectory stringbyappendingstring:@"/sample_audio.m4a"]; nsurl *dsturl = [nsurl fileurlwithpath:dstpath]; //remove if file exists [[nsfilemanager defaultmanager] removeitematurl:dsturl error:nil]; avassetexportsession *exportsession = [[avassetexportsession alloc]initwithasset:newaudioasset presetname:avassetexportpresetpassthrough]; nslog(@"support file types= %@", [exportsession supportedfiletypes]); exportsession.outputfiletype = avfiletypeapplem4a; exportsession.outputurl = dsturl; [exportsession exportasynchronouslywithcompletionhandler:^{ avassetexportsessionstatus status = exportsession.status; if(avassetexportsessionstatuscompleted != status){ nslog(@"export status not yet completed. error: %@", exportsession.error.description); } }]; // uialertview *alert = [[uialertview alloc] initwithtitle:@"asset loaded" message:@"video asset loaded" // delegate:nil cancelbuttontitle:@"ok" otherbuttontitles:nil]; // [alert show]; } }
Comments
Post a Comment