1

I created many layouts with single frame to multiple frames .We should select any of the layouts after selection camera should be appeared to take pics the frames will be in split view.If we select a layout with 3 frames and we are taking pick for 2nd frame ,for first and third camera should not be applied.I also seen AVCam example code but not getting the correct one.how to use split images for custom camera.Hope someone helps.

4

1 回答 1

1

嗨,我通过 AVFoundation 框架得到了答案,我搜索了许多网站以及 AVCam 苹果示例。通过采用不同的视图和 imageViews,我了解在哪里使用相机预览

 dispatch_queue_t sessionQueue = dispatch_queue_create("session queue",  DISPATCH_QUEUE_SERIAL);
 [self setSessionQueue:sessionQueue];

  dispatch_async(sessionQueue, ^{
  [self setBackgroundRecordingID:UIBackgroundTaskInvalid];
  NSError *error = nil;
  AVCaptureDevice *videoDevice = [SecondViewController deviceWithMediaType:AVMediaTypeVideo preferringPosition:AVCaptureDevicePositionBack];
  AVCaptureDeviceInput *videoDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:videoDevice error:&error];
  if (error)
    {
        NSLog(@"%@", error);
    }

    if ([session canAddInput:videoDeviceInput])
    {
        [session addInput:videoDeviceInput];
        [self setVideoDeviceInput:videoDeviceInput];

        dispatch_async(dispatch_get_main_queue(), ^{
       [[(AVCaptureVideoPreviewLayer *)[[self previewView] layer] connection] setVideoOrientation:(AVCaptureVideoOrientation)[self interfaceOrientation]];
        });
    }

    AVCaptureDevice *audioDevice = [[AVCaptureDevice devicesWithMediaType:AVMediaTypeAudio] firstObject];
    AVCaptureDeviceInput *audioDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:audioDevice error:&error];

    if (error)
    {
        NSLog(@"%@", error);
    }

    if ([session canAddInput:audioDeviceInput])
    {
        [session addInput:audioDeviceInput];
    }

    AVCaptureMovieFileOutput *movieFileOutput = [[AVCaptureMovieFileOutput alloc] init];
    if ([session canAddOutput:movieFileOutput])
    {
        [session addOutput:movieFileOutput];
        AVCaptureConnection *connection = [movieFileOutput connectionWithMediaType:AVMediaTypeVideo];
        if ([connection isVideoStabilizationSupported])
            [connection setEnablesVideoStabilizationWhenAvailable:YES];
        [self setMovieFileOutput:movieFileOutput];
    }

    AVCaptureStillImageOutput *stillImageOutput = [[AVCaptureStillImageOutput alloc] init];
    if ([session canAddOutput:stillImageOutput])
    {
        [stillImageOutput setOutputSettings:@{AVVideoCodecKey : AVVideoCodecJPEG}];
        [session addOutput:stillImageOutput];
        [self setStillImageOutput:stillImageOutput];
    }
});

[[自我会话] startRunning];

通过使用这段代码和一些重要的方法,比如 deviceWithMediaType,setFlashMode 我得到了我的解决方案

于 2015-02-23T12:52:20.880 回答