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

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


person SwiftNewling    schedule 26.01.2019    source источник
comment
Какое конкретно место?   -  person Paulw11    schedule 27.01.2019
comment
Где-то в файловой системе, чтобы получить к ней доступ позже в виде таблицы   -  person SwiftNewling    schedule 27.01.2019


Ответы (2)


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

person E.Coms    schedule 26.01.2019
comment
Но как я могу сохранить их прямо в приложении файлов, например? - person SwiftNewling; 27.01.2019
comment
Если VLC сможет получить сохраненный файл mp4. так что вы также можете создать подобное расширение. - person E.Coms; 27.01.2019
comment
Вопрос в том, как я могу получить доступ к кнопке сохранения, чтобы изменить действие и сохранить каталог - person SwiftNewling; 27.01.2019
comment
@SwiftNewling, вы смогли найти ответ на свой вопрос: как я могу получить доступ к кнопке сохранения, чтобы изменить действие и сохранить каталог ?? - person Ghazalah; 20.09.2019

использовать этот 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
    }
}

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

Документ по AAssetWriter

person L1ZI7    schedule 11.11.2020