【问题标题】:Save Video in RPPreviewController to a specific place instead saving to camera roll?将 RPPreviewController 中的视频保存到特定位置而不是保存到相机胶卷?
【发布时间】:2019-01-26 21:57:33
【问题描述】:

我正在使用ReplayKit 进行屏幕录制,当我单击保存按钮时调用委托方法previewController(_:didFinishWithActivityTypes:) 时,它会自动保存到相机胶卷中。我该如何改变呢?我想将视频保存在设备文件系统的某个位置。我在谷歌和苹果文档中搜索了所有内容,但我找不到与此相关的任何内容。

【问题讨论】:

  • 具体是什么地方?
  • 文件系统上的 Somwhere 以便稍后在 tableview 中访问它

标签: ios swift replaykit


【解决方案1】:

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

【讨论】:

  • 但是我怎样才能将它们直接保存到文件应用程序中呢?
  • 如果VLC可以得到保存的mp4。所以你也可以构建一个类似的扩展。
  • 问题是如何访问保存按钮来更改操作和保存目录
  • @SwiftNewling 你能找到你的问题的答案吗:“如何访问保存按钮来更改操作和保存目录”??
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2016-05-01
    • 2015-01-06
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 2015-05-12
    • 2015-09-25
    • 1970-01-01
    相关资源
    最近更新 更多