2017-01-31 29 views
0

我正在开发具有屏幕捕获功能的应用程序。ReplayKit无法记录

ReplayKit非常简单,效果非常好,但是当我测试了很多次录音时,它突然发生录音失败。

当它失败时,它只会在预览视图中显示一个空的黑色视频。没有崩溃,没有错误信息。

我对我自己的代码的疑惑(虽然ReplayKit的实现是超级简单),所以我试图用一个简单的示例代码从这里 https://code.tutsplus.com/tutorials/ios-9-an-introduction-to-replaykit--cms-25458 ,发现问题仍然发生。

我找到了这个Q & A,并试图在开始新的录音之前放弃录音,但没有奏效。 https://forums.developer.apple.com/thread/24613

我还发现,虽然它在第一次尝试(我的意思是刚启动应用程序后)录制失败,但第二次尝试成功。

所以我猜测我的系统已经用完了一种系统资源,而且这种清理只发生在录音或类似的事情之后,但我不知道细节的研究,因为ReplayKit是如此封闭并且仅提供对其数据的非常有限的访问。

我做的唯一不规则的事情是,我做了一个实验来直接用这段代码检索视频数据。我做了很多次,所以如果这个代码有问题,影响可能很大。

[[RPScreenRecorder sharedRecorder] stopRecordingWithHandler:^(RPPreviewViewController * _Nullable previewViewController, NSError * _Nullable error) { 

    NSURL* screenCaptureVideoURL = [previewViewController valueForKey:@"movieURL"]; 
    [self saveCaptureVideoToCameraRoll:screenCaptureVideoURL]; // My own routine to save the video to camera roll 

}]; 

是否还有其他人面临同样的问题?任何解决方案?

任何信息表示赞赏。 谢谢。

回答

1

我有一个类似的问题,事实证明,使用AVPlayer是在预览控制器上返回黑屏的原因。我认为这可能是DRM功能而不是错误的replayKit,因为文档中提到您无法录制AVPlayer内容。

您是否在使用AVPlayer做任何事情?

+0

啊,是的!我正在使用AVPlayer。 录制时没有必要,所以我有点解雇了玩家,但我不确定这个实例是否真的被处置。我会检查的! 非常感谢! –

+1

我检查了我的代码,发现我没有使用AVPlayer,但是我发现我使用的是AVCaptureVideoPreviewLayer。通过消除这个工作! –