Сохранить видео в RPPreviewController в определенном месте вместо сохранения в камеру?

Я с экрана записи ReplayKit и когда метод делегата previewController(_:didFinishWithActivityTypes:) вызывается, когда я нажимаю кнопку сохранения, она автоматически сохраняется в рулоне камеры. Как я могу это изменить? Я хочу сохранить видео где-нибудь в файловой системе на устройстве. Я искал по всему Google и в документации Apple, но я не мог найти ничего, что связано с этим.

1 ответ

Если ваше приложение поддерживает приложение FILES, набор воспроизведения может сохранить файл непосредственно в папке. Например, приложение VLC имеет папку в FILES. В противном случае вам может понадобиться реализовать расширение действия, чтобы сделать аналогичную вещь.

Использовать этот API

- (void)startCaptureWithHandler:(nullable void (^)(CMSampleBufferRef sampleBuffer, RPSampleBufferType bufferType, NSError *_Nullable error))captureHandler completionHandler:(nullable void (^)(NSError *_Nullable error))completionHandler API_AVAILABLE(ios(11.0), tvos(11.0), macos(11.0));

образец кода:

-(void)startCapture {

    if (@available(iOS 11.0, *)) {

        [[RPScreenRecorder sharedRecorder]  startCaptureWithHandler:^(CMSampleBufferRef  _Nonnull sampleBuffer, RPSampleBufferType bufferType, NSError * _Nullable error) {

            if (CMSampleBufferDataIsReady(sampleBuffer) && bufferType == RPSampleBufferTypeVideo) {
                NSLog(@"Recording started successfully.");
                //save using AVAssetWriter
            }
        } completionHandler:^(NSError * _Nullable error) {
            if (!error) {
                NSLog(@"Recording started successfully.");
            }else{
                NSLog(@"Recording started error %@",error);
            }
        }];
    } else {
        // earlier versions issue
    }
}

Также: этот пост может вам как-то помочь

AVAssetWriter Doc

Другие вопросы по тегам