2015-09-24 2 views
1

Я немного смущен, какой пресет я должен использовать для разных устройств. В настоящее время я использую AVCaptureSessionPresetMedium для всех устройств. Тем не менее, я хочу использовать различные разрешения для разных телефонов. Например, новый iPhone 6s может принимать видео 4K, и в этом случае я бы использовал AVCaptureSessionPreset3840x2160.Выбор правильного AVCaptureSessionPreset для разных устройств

То, что я прошу, - это элегантный способ выбора правильной предустановки для разных устройств. Спасибо

ответ

1

Вы можете использовать, как показано ниже.

[CaptureSession setSessionPreset:AVCaptureSessionPresetMedium]; 
if ([CaptureSession canSetSessionPreset:AVCaptureSessionPreset640x480])  //Check size based configs are supported before setting them 
     [CaptureSession setSessionPreset:AVCaptureSessionPreset640x480]; 
if ([CaptureSession canSetSessionPreset:AVCaptureSessionPreset1280x720]) 
     [CaptureSession setSessionPreset:AVCaptureSessionPreset1280x720]; 
if ([CaptureSession canSetSessionPreset:AVCaptureSessionPreset1920x1080]) 
     [CaptureSession setSessionPreset:AVCaptureSessionPreset1920x1080]; 
if ([CaptureSession canSetSessionPreset:AVCaptureSessionPreset3840x2160]) 
     [CaptureSession setSessionPreset:AVCaptureSessionPreset3840x2160]; 

или вы можете использовать только один оператор

[CaptureSession setSessionPreset:AVCaptureSessionPresetHigh]; 
1
#ifdef __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_9_0 
CGFloat iOSVersion = [[[UIDevice currentDevice] systemVersion] integerValue]; 
if (iOSVersion>=9 && [session canSetSessionPreset:AVCaptureSessionPreset3840x2160]) { 
    session.sessionPreset = AVCaptureSessionPreset3840x2160; 
} 
#else 
// the code above won't compile in Xcode 6 and older 
#endif 

...

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