ios - Record video while other video is playing -


i using uiimagepickercontroller record video. , using avplayer play video. , adding avplayerlayer uiimagepickercontroller's cameraoverlayview can see video while recording. requirement is

  1. i need watch video while recording video using uiimagepickercontroller
  2. using headset need listen audio playing video
  3. need record voice recording video
  4. only voice should recorded not playing video's audio.

every thing working 4. audio playing video mix voice. how handle case? final goal is

  1. out put playing video headset
  2. 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