Сбой - AVCaptureSessionPresentMedium в iPhone XS - PullRequest
0 голосов
/ 01 октября 2018

Я попытался снять видео после успешного захвата изображений и сбоя моего приложения.

if (iSRecordVideo) {
        DLog(@"iSRecordVideo");
        //ADD AUDIO INPUT
        AVCaptureDevice *audioCaptureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];
        NSError *error = nil;
        AVCaptureDeviceInput *audioInput = [AVCaptureDeviceInput deviceInputWithDevice:audioCaptureDevice error:&error];
        if (audioInput)
        {
            [[self captureSession] addInput:audioInput];
        }

        //ADD MOVIE FILE OUTPUT
        self.videoOutput = [[AVCaptureMovieFileOutput alloc] init];

        Float64 TotalSeconds = 20;          //Total seconds
        int32_t preferredTimeScale = 20;    //Frames per second
        self.maxDuration = CMTimeMakeWithSeconds(TotalSeconds, preferredTimeScale); //<<SET MAX DURATION
        self.videoOutput.maxRecordedDuration = self.maxDuration;
        self.videoOutput.minFreeDiskSpaceLimit = 1024 * 1024;//<<SET MIN FREE SPACE IN BYTES FOR RECORDING TO CONTINUE ON A VOLUME


        if (IS_IPHONE_X_S_MAX)
        {
            [self.captureSession setSessionPreset:AVCaptureSessionPresetMedium];
        }
        else
        {
            [[self captureSession] setSessionPreset:AVCaptureSessionPresetMedium];
        }


        if ([[self captureSession] canAddOutput:self.videoOutput])
            [[self captureSession] addOutput:self.videoOutput];

        //SET THE CONNECTION PROPERTIES (output properties)
        [self CameraSetOutputProperties:audioCaptureDevice];
    }

Xcode не отображает никаких сообщений об ошибках в консоли.Пожалуйста, найдите изображение для получения дополнительной информации.enter image description here.

1 Ответ

0 голосов
/ 01 октября 2018

Документация гласит:

Вы можете ТОЛЬКО установить пресет, если canSetSessionPreset (_ :) возвращает true для этого пресета.

вам следуетdo

if([self.captureSession canSetSessionPreset: AVCaptureSessionPresetMedium]){
      //set the medium preset
}

Значением по умолчанию для предустановки сеанса является Высокое.

Может быть, для XS max не допускается любое значение, кроме предустановки высокого уровня.

...