ReplayKit最近真的让我很沮丧。出于某种原因
RPScreenRecorder.shared().startCapture(handler: { (sample, bufferType, error) in当我调用它时,实际上不起作用,因为我在其中有一个print()语句,而且它从未被调用过。
我在ViewController中的代码是:
import UIKit
import AVFoundation
import SpriteKit
import ReplayKit
import AVKit
class ViewController: UIViewController, AVCaptureVideoDataOutputSampleBufferDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate, RPPreviewViewControllerDelegate {
var assetWriter:AVAssetWriter!
var videoInput:AVAssetWriterInput!
func startRecording(withFileName fileName: String) {
if #available(iOS 11.0, *)
{
assetWriter = try! AVAssetWriter(outputURL: fileURL, fileType:
AVFileType.mp4)
let videoOutputSettings: Dictionary<String, Any> = [
AVVideoCodecKey : AVVideoCodecType.h264,
AVVideoWidthKey : UIScreen.main.bounds.size.width,
AVVideoHeightKey : UIScreen.main.bounds.size.height
];
videoInput = AVAssetWriterInput (mediaType: AVMediaType.video, outputSettings: videoOutputSettings)
videoInput.expectsMediaDataInRealTime = true
assetWriter.add(videoInput)
print("HERE")
RPScreenRecorder.shared().startCapture(handler: { (sample, bufferType, error) in
print("RECORDING")
}
}
}
func stopRecording(handler: @escaping (Error?) -> Void)
{
if #available(iOS 11.0, *)
{
RPScreenRecorder.shared().stopCapture
{ (error) in
handler(error)
self.assetWriter.finishWriting
{
print("STOPPED")
}
}
}
}“这里”是印刷的,而不是“录音”的。
附注:对不起,代码格式错误,我相信您会理解的:)
我也尝试过一种不同的方法:
let recorder = RPScreenRecorder.shared()
recorder.startRecording{ [unowned self] (error) in
guard error == nil else {
print("There was an error starting the recording.")
return
}
print("Started Recording Successfully")
}为了停止录音..。
recorder.stopRecording { [unowned self] (preview, error) in
print("Stopped recording")
guard preview != nil else {
print("Preview controller is not available.")
return
}
onGoingScene = true
preview?.previewControllerDelegate = self
self.present(preview!, animated: true, completion: nil)
}当我调用recorder.stopRecording()函数时,这个方法不会停止,“停止记录”永远不会被调用。
有人能帮我吗?因为这真的让我很沮丧,你怎么能正确地使用ReplayKit在iOS 11中记录你的屏幕呢?我在网上到处搜索,没有一种方法对我有用,我不知道为什么。我的Info.plist里有必要的许可密钥。
谢谢
发布于 2020-01-21 20:42:19
一个巨大的提醒,ReplayKit不工作在模拟器。我在同样的问题上浪费了几个小时,直到我意识到ReplayKit永远不会触发startCapture处理程序,因为它从不在模拟器中记录。
发布于 2018-10-08 06:40:28
这个问题没有多少可能的原因。其中一些人在这里:
RPScreenRecorderDelegate协议,并将Recording Changes screenRecorder:didStopRecordingWithPreviewViewController:error:方法添加到类中,并检查此方法中是否出现任何错误。https://stackoverflow.com/questions/51796101
复制相似问题