ReplayKit не может записать

Я разрабатываю приложение с функцией захвата экрана.

ReplayKit довольно прост и работает очень хорошо, но пока я много раз тестировал его при записи, он внезапно терпел неудачу при записи.

Когда он терпит неудачу, он просто показывает пустое черное видео в окне предварительного просмотра. Ни сбоя, ни сообщения об ошибке.

У меня были сомнения по поводу моего собственного кода (хотя реализация ReplayKit очень проста), поэтому я попробовал с помощью простого образца кода отсюда https://code.tutsplus.com/tutorials/ios-9-an-introduction-to-replaykit-cms-25458 и обнаружил, что проблема все еще возникает.

Я нашел эти вопросы и ответы и попытался отбросить записи перед тем, как начать новую, но это не сработало. 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

}];

Есть ли еще кто-нибудь, кто сталкивается с такой же проблемой? Какое-нибудь решение?

Любая информация приветствуется. Спасибо.


person Takeshi Yokemura    schedule 31.01.2017    source источник


Ответы (1)


У меня была аналогичная проблема, и оказалось, что использование AVPlayer было причиной появления черных экранов на контроллере предварительного просмотра. Я думаю, что это может быть функция DRM, а не ошибка replayKit, потому что в документации упоминается, что вы не можете записывать содержимое AVPlayer.

Вы используете AVPlayer для чего-нибудь?

person Andrew    schedule 14.02.2017
comment
О да! Я использую AVPlayer. В этом нет необходимости во время записи, поэтому я вроде как отклонил проигрыватель, но я не уверен, что экземпляр действительно удален. Я это проверю! Большое спасибо! - person Takeshi Yokemura; 15.02.2017
comment
Я проверил свой код и обнаружил, что не использую AVPlayer, но обнаружил, что использую AVCaptureVideoPreviewLayer. Удалив это, это сработало! - person Takeshi Yokemura; 15.02.2017