iphone - Can't Capture AVCaptureVideoPreviewLayer -


in app opening video preview layer code:

    avcapturedeviceinput *captureinput = [avcapturedeviceinput                                        deviceinputwithdevice:[avcapturedevice defaultdevicewithmediatype:avmediatypevideo]                                        error:nil]; /*we setupt output*/ avcapturevideodataoutput *captureoutput = [[avcapturevideodataoutput alloc] init];   captureoutput.alwaysdiscardslatevideoframes = yes;   dispatch_queue_t queue; queue = dispatch_queue_create("cameraqueue", null); [captureoutput setsamplebufferdelegate:self queue:queue]; dispatch_release(queue); nsstring* key = (nsstring*)kcvpixelbufferpixelformattypekey;  nsnumber* value = [nsnumber numberwithunsignedint:kcvpixelformattype_32bgra];  nsdictionary* videosettings = [nsdictionary dictionarywithobject:value forkey:key];  [captureoutput setvideosettings:videosettings];   self.capturesession = [[avcapturesession alloc] init]; [self.capturesession addinput:captureinput]; [self.capturesession addoutput:captureoutput]; /*we use medium quality, ont iphone 4 demo laging much, conversion in uiimage , cgimage demands ressources 720p resolution.*/ [self.capturesession setsessionpreset:avcapturesessionpresetmedium];    cgrect vframe; vframe = cgrectmake(self.viewno2.frame.origin.x, self.viewno2.frame.origin.y, self.viewno2.frame.size.width, self.viewno2.frame.size.height);       /*we add custom layer (we need change orientation of layer video displayed correctly)*/ self.customlayer = [calayer layer]; self.customlayer.frame = vframe; self.customlayer.contentsgravity = kcagravityresizeaspect; [self.view.layer addsublayer:self.customlayer];   cgrect vframe1; vframe1 = cgrectmake(self.viewno3.frame.origin.x, self.viewno3.frame.origin.y, self.viewno3.frame.size.width, self.viewno3.frame.size.height);     /*we add custom layer (we need change orientation of layer video displayed correctly)*/ self.customlayer1 = [calayer layer]; self.customlayer1.frame = vframe1; self.customlayer1.contentsgravity = kcagravityresizeaspect; [self.view.layer addsublayer:self.customlayer1];    ///*we add imageview*/ //self.imageview = [[uiimageview alloc] init]; //self.imageview.frame = cgrectmake(9, 9, 137, 441); //[self.view addsubview:self.imageview]; /*we add preview layer*/   cgrect vframe2; vframe2 = cgrectmake(self.viewno1.frame.origin.x, self.viewno1.frame.origin.y, self.viewno1.frame.size.width, self.viewno1.frame.size.height);     self.prevlayer = [avcapturevideopreviewlayer layerwithsession: self.capturesession]; self.prevlayer.frame = vframe2;  self.prevlayer.videogravity = avlayervideogravityresizeaspectfill; [self.view.layer addsublayer: self.prevlayer]; /*we start capture*/ [self.capturesession startrunning]; 

when trying capture screen method:

-(ibaction)photo{  cgrect rect = [self.view bounds]; uigraphicsbeginimagecontextwithoptions(rect.size,yes,0.0f); cgcontextref context = uigraphicsgetcurrentcontext(); [self.view.layer renderincontext:context];    uiimage *viewimage = uigraphicsgetimagefromcurrentimagecontext(); uigraphicsendimagecontext(); uiimagewritetosavedphotosalbum(viewimage, nil, nil, nil);} 

the prevlayer isn't being captured, missing something?

avcapturevideopreviewlayer not respond capturing screen uigraphicsgetimagefromcurrentimagecontext(). it's strange rule apple has done. way current screen image tap image data buffer avcaptureinput. can manually added onto screenshot.


Comments

Popular posts from this blog

c# - SVN Error : "svnadmin: E205000: Too many arguments" -

c# - Copy ObservableCollection to another ObservableCollection -

All overlapping substrings matching a java regex -