Сохранить видео в RPPreviewController в определенном месте вместо сохранения в камеру?
Я с экрана записи ReplayKit
и когда метод делегата previewController(_:didFinishWithActivityTypes:)
вызывается, когда я нажимаю кнопку сохранения, она автоматически сохраняется в рулоне камеры. Как я могу это изменить? Я хочу сохранить видео где-нибудь в файловой системе на устройстве. Я искал по всему Google и в документации Apple, но я не мог найти ничего, что связано с этим.
1 ответ
Если ваше приложение поддерживает приложение FILES, набор воспроизведения может сохранить файл непосредственно в папке. Например, приложение VLC имеет папку в FILES. В противном случае вам может понадобиться реализовать расширение действия, чтобы сделать аналогичную вещь.
Использовать этот 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
}
}
Также: этот пост может вам как-то помочь