将RPPreviewController中的视频保存到特定位置,而不是保存到相机胶卷?

时间:2019-01-26 21:57:34

标签: ios swift replaykit

使用ReplayKit进行屏幕录像,当我单击保存按钮时调用委托方法previewController(_:didFinishWithActivityTypes:)时,它将自动保存到相机胶卷中。我该如何更改?我想将视频保存在设备上的文件系统中。我在整个Google和Apple文档中进行了搜索,但找不到任何与此相关的信息。

2 个答案:

答案 0 :(得分:0)

如果您的应用程序支持应用程序文件,则重放工具包可以将文件直接保存到文件夹中。例如,VLC应用程序在FILES中有一个文件夹。否则,您可能需要实现一个动作扩展来做类似的事情。

答案 1 :(得分:0)

使用此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
    }
}

也:这个post可能会以某种方式帮助您

AVAssetWriter Doc