有没有办法以编程方式录制 IOS 屏幕?意味着您正在执行的任何活动,例如单击按钮、滚动表格视图。
即使正在播放的视频会与其他活动一起再次捕获?
尝试过这些
- https://www.raywenderlich.com/30200/avfoundation-tutorial-adding-overlays-and-animations-to-videos https://www.raywenderlich.com/30200/avfoundation-tutorial-adding-overlays-and-animations-to-videos
- https://github.com/alskipp/ASScreenRecorder https://github.com/alskipp/ASScreenRecorder
但这些库不会提供高质量的视频。我需要高质量的视频。
问题是,当我捕获屏幕时在后台播放视频时,它不会显示流畅的视频。它显示一帧视频,然后 3-4 秒后显示第二帧,依此类推。而且视频质量不好,很模糊
从 iOS 9 开始,ReplayKit 似乎可以大大简化这一过程。
https://developer.apple.com/reference/replaykit https://developer.apple.com/reference/replaykit
https://code.tutsplus.com/tutorials/ios-9-an-introduction-to-replaykit--cms-25458 https://code.tutsplus.com/tutorials/ios-9-an-introduction-to-replaykit--cms-25458
Update:既然 iOS 11 有内置的屏幕录像机,这可能不太相关,但以下内容Swift 3代码对我有用:
import ReplayKit
@IBAction func toggleRecording(_ sender: UIBarButtonItem) {
let r = RPScreenRecorder.shared()
guard r.isAvailable else {
print("ReplayKit unavailable")
return
}
if r.isRecording {
self.stopRecording(sender, r)
}
else {
self.startRecording(sender, r)
}
}
func startRecording(_ sender: UIBarButtonItem, _ r: RPScreenRecorder) {
r.startRecording(handler: { (error: Error?) -> Void in
if error == nil { // Recording has started
sender.title = "Stop"
} else {
// Handle error
print(error?.localizedDescription ?? "Unknown error")
}
})
}
func stopRecording(_ sender: UIBarButtonItem, _ r: RPScreenRecorder) {
r.stopRecording( handler: { previewViewController, error in
sender.title = "Record"
if let pvc = previewViewController {
if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.pad {
pvc.modalPresentationStyle = UIModalPresentationStyle.popover
pvc.popoverPresentationController?.sourceRect = CGRect.zero
pvc.popoverPresentationController?.sourceView = self.view
}
pvc.previewControllerDelegate = self
self.present(pvc, animated: true, completion: nil)
}
else if let error = error {
print(error.localizedDescription)
}
})
}
// MARK: RPPreviewViewControllerDelegate
func previewControllerDidFinish(_ previewController: RPPreviewViewController) {
previewController.dismiss(animated: true, completion: nil)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)