2016-01-15 3 views
3

Я разрабатываю зеркальное приложение, используя переднюю камеру с AVFoundation. Я уже закончил отображение экрана камеры до UIView. Но как настроить яркость? Коды так:AVCaptureSession Яркость

-(void)AVCaptureInit { 
    mCameraAVSession = [[AVCaptureSession alloc] init]; 
    [mCameraAVSession setSessionPreset:AVCaptureSessionPresetPhoto]; 

    mCaptureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 

    NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; 
    for (AVCaptureDevice *device in devices) { 
     if ([device position] == AVCaptureDevicePositionFront) { 
      mCaptureDevice = device; 
      break; 
     } 
    } 

    //if ([mCaptureDevice hasTorch] && [mCaptureDevice hasFlash]) 
    { 
     [mCaptureDevice lockForConfiguration:nil]; 
     // [mCaptureDevice setTorchMode:AVCaptureTorchModeOn]; 
     //[mCaptureDevice setExposurePointOfInterest:0.5]; 

     [mCaptureDevice setExposureMode:AVCaptureExposureModeManual]; 

     [mCaptureDevice unlockForConfiguration]; 
    } 



    // [inputDevice setTorchModeOnWithLevel:0.5 error:NULL]; 

    NSError *error; 
    AVCaptureDeviceInput *deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:mCaptureDevice error:&error]; 

    if ([mCameraAVSession canAddInput:deviceInput]) { 
     [mCameraAVSession addInput:deviceInput]; 
    } 

    AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:mCameraAVSession]; 
    [previewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill]; 
    CALayer *rootLayer = [mCameraView layer]; 
    [rootLayer setMasksToBounds:YES]; 
    CGRect frame = mCaptureView.frame; 
    [previewLayer setFrame:frame]; 
    [rootLayer insertSublayer:previewLayer atIndex:0]; 

    mCameraImageOutput = [[AVCaptureStillImageOutput alloc] init]; 
    NSDictionary *outputSettings = [[NSDictionary alloc] initWithObjectsAndKeys:AVVideoCodecJPEG, AVVideoCodecKey, nil]; 
    [mCameraImageOutput setOutputSettings:outputSettings]; 


    [mCameraAVSession addOutput:mCameraImageOutput]; 

    [mCameraAVSession startRunning]; 

    [self setVisible:mCaptureImage IsVisible:NO]; 
} 

Любой сказал, что можно было бы регулировать яркость с экспозиции, но я не знаю, как использовать его. Тем более, я хочу настроить яркость камеры, когда я зажимаю.

+0

Вы прочитали документацию? Вы имеете в виду экспозицию изображения или экспозицию камеры? –

+0

Спасибо за ваш ответ. Это означает, что экспозиция камеры. –

+1

https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVCaptureDevice_Class/#//apple_ref/doc/uid/TP40009520-CH1-SW15 –

ответ

2

Ручная (пользовательская) экспозиция камеры описана в WWDC2014 Session 508 и Manual AVCam Sample Code.

Попробуйте сами, запустив AVCamManual, нажав «Экспозиция»> «Пользовательский» и перетащив ползунок «Экспозиция».

В коде, это сводится к настройке вашего AVCaptureDeviceexposureMode к AVCaptureExposureModeCustom и призывающую

if ([mCaptureDevice lockForConfiguration:&error]) { 
    [mCaptureDevice setExposureModeCustomWithDuration:exposureDuration ISO:AVCaptureISOCurrent completionHandler:nil]; 
    [mCaptureDevice unlockForConfiguration]; 
} 

P.S. Я не уверен, откуда вы получаете AVCaptureExposureModeManual. Кажется, он не существует.

Смежные вопросы