为不同的设备选择正确的AVCaptureSessionPreset

时间:2015-09-24 05:39:33

标签: avfoundation swift2

我有点困惑我应该为不同的设备使用哪个预设。目前我正在为所有设备使用AVCaptureSessionPresetMedium。但是,我想利用不同手机的不同分辨率。例如,新的iPhone 6s可以拍摄4K视频,在这种情况下,我会使用AVCaptureSessionPreset3840x2160

我要问的是为不同设备选择正确预设的优雅方式。感谢

2 个答案:

答案 0 :(得分: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 :(得分: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

...