2014-01-26 2 views
2

Я пытаюсь реализовать приложение камеры с использованием AVFoundation. Я хочу использовать AVCaptureExposureModeAutoFocus установить exposurePointOfInterest в точке, а затем зафиксировать экспозицию, как объяснена документации Apple:iPhone 5: AVCaptureExposureModeAutoFocus не поддерживается в iOS 7

AVCaptureExposureModeAutoExpose: устройство автоматически регулирует экспозицию один раз, а затем изменяет режим экспозиции AVCaptureExposureModeLocked.

Это функция, которую я использовал:

-(void)autoExposeAtPoint:(CGPoint)point 
{ 
    AVCaptureDevice *device = [videoInput device]; 
    if([device isExposurePointOfInterestSupported] && [device isExposureModeSupported:AVCaptureExposureModeAutoExpose]){ 
     if([device lockForConfiguration:NULL]){ 
      [device setExposurePointOfInterest:point]; 
      [device setExposureMode:AVCaptureExposureModeAutoExpose]; 
      [device unlockForConfiguration]; 
      NSLog(@"Exposure point of intereset has been set to (%f,%f)",point.x, point.y); 
     } 
    } 
} 

Однако автоэкспозиции в нужном месте просто не было. Когда я отлаживал использование NSLog ниже, оказалось, что AVCaputreExposureModeAutoExpose не поддерживается. Если бы я использовал AVCaptureExposureModeContinuousAutoExpose, он работал бы отлично.

Я не понимаю этого; это правда, что этот AVCaputreExposureModeAutoExpose не поддерживается в задней камере iPhone 5 с iOS7? У кого-нибудь есть ключ? БЛАГОДАРЯ!

Debug Код:

NSLog(@"issupported: %hhd", [device isExposurePointOfInterestSupported]); 
NSLog(@"ismodesupported: %hhd" ,[device isExposureModeSupported:AVCaptureExposureModeAutoExpose]); 

**Result:** 
issupported: 1 
ismodesupported: 0 

ответ

2

Я отвечал на этот вопрос на форуме разработчиков компании Apple и получил ответил Брэд Форд (Основной медиа Engineering) динамик для камеры с Фондом AV в WWDC Apple.

Вот его answer:

Correct. AVCaptureExposureModeAutoExpose, определенный в заголовке , в настоящее время не реализуется ни на одном устройстве iOS.

Вы можете однако реализовать его в своем коде, установив нужную точку интереса, то вызов setExposureMode: AVCaptureExposureModeContinuousAutoExposure, а затем слушать (ключ-значение наблюдения) свойство «isAdjustingExposure» из AVCaptureDevice в узнайте, когда экспозиция закончит настройку. Как только как он, установитеExposureMode в AVCaptureExposureModeLocked.

+0

Соответствующий ключ на самом деле «регулирует экспозицию». – nrj

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