audio - Front Camera recording is MUTE -


i working camera recoding app. want record video using front , camera both. camera video working fine front camera final video mute (without audio).

code:

- (id)initwithpreviewview:(uiview *)previewview {      self = [super init];      if (self) {          nserror *error;          self.capturesession = [[avcapturesession alloc] init];         self.capturesession.sessionpreset = avcapturesessionpresethigh;          //avcapturesessionpresethigh avcapturesessionpresetphoto  //        avcapturedevice *videodevice = [avcapturedevice defaultdevicewithmediatype:avmediatypevideo];  //avcapturedevice *videodevice = [avcapturedevice defaultdevicewithmediatype:avmediatypevideo];         avcapturedevice *videodevice; //        if (isneededtosave) //        { //            //for front cam //            videodevice = [self frontcamera]; // //        } //        else //        { //            //for cam             videodevice = [avcapturedevice defaultdevicewithmediatype:avmediatypevideo];        // }          avcapturedeviceinput *videoin = [avcapturedeviceinput deviceinputwithdevice:videodevice error:&error];          if (error) {             nslog(@"video input creation failed");             return nil;         }          if (![self.capturesession canaddinput:videoin]) {             nslog(@"video input add-to-session failed");             return nil;         }         [self.capturesession addinput:videoin];          /*take photo*/         self.isusingfrontfacingcamera = 0;         // make still image output         stillimageoutput = [avcapturestillimageoutput new];         [stillimageoutput addobserver:self forkeypath:@"capturingstillimage" options:nskeyvalueobservingoptionnew context:(__bridge void *)(avcapturestillimageiscapturingstillimagecontext)];         if ( [self.capturesession canaddoutput:stillimageoutput] )             [self.capturesession addoutput:stillimageoutput];          // make video data output         videodataoutput = [avcapturevideodataoutput new];          // want bgra, both coregraphics , opengl work 'bgra'         nsdictionary *rgboutputsettings = [nsdictionary dictionarywithobject:                                            [nsnumber numberwithint:kcmpixelformat_32bgra] forkey:(id)kcvpixelbufferpixelformattypekey];         [videodataoutput setvideosettings:rgboutputsettings];         [videodataoutput setalwaysdiscardslatevideoframes:yes]; // discard if data output queue blocked (as process still image)          // create serial dispatch queue used sample buffer delegate when still image captured         // serial dispatch queue must used guarantee video frames delivered in order         // see header doc setsamplebufferdelegate:queue: more information         videodataoutputqueue = dispatch_queue_create("videodataoutputqueue", dispatch_queue_serial);         [videodataoutput setsamplebufferdelegate:self queue:videodataoutputqueue];          if ( [self.capturesession canaddoutput:videodataoutput] )             [self.capturesession addoutput:videodataoutput];         [[videodataoutput connectionwithmediatype:avmediatypevideo] setenabled:no];         /*take photo*/         // save default format         self.defaultformat = videodevice.activeformat;         defaultvideomaxframeduration = videodevice.activevideomaxframeduration;           avcapturedevice *audiodevice= [avcapturedevice defaultdevicewithmediatype:avmediatypeaudio];          avcapturedeviceinput *audioin = [avcapturedeviceinput deviceinputwithdevice:audiodevice error:&error];         [self.capturesession addinput:audioin];          self.fileoutput = [[avcapturemoviefileoutput alloc] init];         [self.capturesession addoutput:self.fileoutput];           self.previewlayer = [[avcapturevideopreviewlayer alloc] initwithsession:self.capturesession];         self.previewlayer.frame = previewview.bounds;         self.previewlayer.contentsgravity = kcagravityresizeaspectfill;         self.previewlayer.videogravity = avlayervideogravityresizeaspectfill;         [previewview.layer insertsublayer:self.previewlayer atindex:0];         [self.capturesession startrunning];     }     return self; }  - (void)switchcameras {    //  [self frontcamera]; //    avcapturedeviceposition desiredposition; //       desiredposition = avcapturedevicepositionfront;      avcapturedeviceposition desiredposition;       nsinteger isfront = [[nsuserdefaults standarduserdefaults] integerforkey:@"isusingfrontfacingcamera"];      if (isfront)         desiredposition = avcapturedevicepositionback;     else     desiredposition = avcapturedevicepositionfront;        (avcapturedevice *d in [avcapturedevice deviceswithmediatype:avmediatypevideo]) {         if ([d position] == desiredposition) {             [[self.previewlayer  session] beginconfiguration];             avcapturedeviceinput *input = [avcapturedeviceinput deviceinputwithdevice:d error:nil];             (avcaptureinput *oldinput in [[self.previewlayer  session] inputs]) {                 [[self.previewlayer  session] removeinput:oldinput];             }             [[self.previewlayer session] addinput:input];             [[self.previewlayer  session] commitconfiguration];             break;         }     }     if (isfront==0)     {     [[nsuserdefaults standarduserdefaults] setinteger:1 forkey:@"isusingfrontfacingcamera"];     }     else     {         [[nsuserdefaults standarduserdefaults] setinteger:0 forkey:@"isusingfrontfacingcamera"];      }      [[nsuserdefaults standarduserdefaults] synchronize];      //nsinteger  isfront1= [[nsuserdefaults standarduserdefaults] integerforkey:@"isusingfrontfacingcamera"];   } 


Comments