i using uiimagepickercontroller record video. , using avplayer play video. , adding avplayerlayer uiimagepickercontroller's cameraoverlayview can see video while recording. requirement is
- i need watch video while recording video using
uiimagepickercontroller - using headset need listen audio playing video
- need record voice recording video
- only voice should recorded not playing video's audio.
every thing working 4. audio playing video mix voice. how handle case? final goal is
- out put playing video headset
- input recording headset's mic
please me done.
your requirement interesting. need play , record @ same time, right? that, need initialize audio session category avaudiosessioncategoryplayandrecord.
[[avaudiosession sharedinstance] setcategory:avaudiosessioncategoryplayandrecord error:&error]; because using uiimagepickercontroller record don't have control speaker , mic. test , see if works.
in case still have problem, suggest use avcapturesession record video without audio. @ example how use record-video-with-avcapturesession-2.
update: in voip application, use avaudiounit record while playing back. think way record video , audio separately , use avcomposition compose single movie. using avcapturesession record video , use ezaudio record audio. ezaudio use avaudiounit record should work. can test record audio while playing movie , see if works. hope help
update: tested , work if use headphone or select microphone back. here tested code:
nsstring *moviepath = [[nsbundle mainbundle] pathforresource:@"videoviewdemo" oftype:@"mp4"]; nsurl *url = [nsurl fileurlwithpath:moviepath]; // may find test stream @ <http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8>. avplayeritem *playeritem = [avplayeritem playeritemwithurl:url]; avplayer *player = [avplayer playerwithplayeritem:playeritem]; avplayerlayer *layer = [[avplayerlayer alloc] init]; [layer setplayer:player]; [layer setframe:cgrectmake(0, 0, 100, 100)]; [self.view.layer addsublayer:layer]; [player play]; dispatch_after(dispatch_time(dispatch_time_now, (int64_t)(1 * nsec_per_sec)), dispatch_get_main_queue(), ^{ // // setup avaudiosession. ezmicrophone not work on ios // if don't this! // avaudiosession *session = [avaudiosession sharedinstance]; nserror *error; [session setcategory:avaudiosessioncategoryplayandrecord error:&error]; if (error) { nslog(@"error setting audio session category: %@", error.localizeddescription); } [session setactive:yes error:&error]; if (error) { nslog(@"error setting audio session active: %@", error.localizeddescription); } // // customizing audio plot's // // background color self.audioplot.backgroundcolor = [uicolor colorwithred:0.984 green:0.471 blue:0.525 alpha:1.0]; // waveform color self.audioplot.color = [uicolor colorwithred:1.0 green:1.0 blue:1.0 alpha:1.0]; // plot type self.audioplot.plottype = ezplottypebuffer; // // create microphone // self.microphone = [ezmicrophone microphonewithdelegate:self]; // // set microphone input uipickerview items select // between different microphone inputs. here we're doing behind hood // enumerating available inputs provided avaudiosession. // self.inputs = [ezaudiodevice inputdevices]; self.microphoneinputpickerview.datasource = self; self.microphoneinputpickerview.delegate = self; // // start microphone // [self.microphone startfetchingaudio]; self.microphonetextlabel.text = @"microphone on"; [[avaudiosession sharedinstance] overrideoutputaudioport:avaudiosessionportoverridespeaker error:nil]; });
Comments
Post a Comment