使用 ReplayKit 录制屏幕上的任何应用程序
Use ReplayKit to record any app on screen
我正在尝试创建一个 iPhone 应用程序,它不仅可以记录应用程序的屏幕,而且如果置于后台,它会记录屏幕上的所有内容,包括其他应用程序。这就是 "Control Center" 录音的工作原理。不同之处在于我想在没有用户干预的情况下立即访问视频,当然要征得用户的同意。
我在 iOS 12 上使用 ReplayKit2 实现了使用嵌入式广播上传扩展的代码。我还没有在网上找到任何像这样工作的例子。
我在 Bitbucket 上发布了代码:https://bitbucket.org/breelig/replaykitbroadcasttofile/src/master/
我在SO上找到的壁橱类似问题是:ReplayKit stops screen recording in background mode of the application or outside the app?
更新
基于@KaneCheshire 和@AndreyA 的良好回应。下面和其他随机来源,我能够开发出一个有效的解决方案。请查看上面我的 BitBucket link 中的代码。
来自docs:
Apps on a user’s device can share the recording function, with each
app having its own instance of RPScreenRecorder. Your app can record
the audio and video inside of the app, along with user commentary
through the microphone
录制屏幕的唯一其他方法是通过 Broadcast Upload Extension,这需要用户通过控制中心启动它。
我遇到过与您遇到的几乎相同的问题,而且它绝对缺乏任何类型的指南或文档。
我自己解决这个问题的方法是将 nil 设置为我的首选扩展,因此它使 RPSystemBroadcastPickerView 显示所有这些,包括系统屏幕视频捕获:
override func viewDidLoad() {
super.viewDidLoad()
let broadcastPicker = RPSystemBroadcastPickerView(frame: CGRect(x: 100, y: 100, width: 80, height: 80))
broadcastPicker.preferredExtension = nil
view.addSubview(broadcastPicker)
}
我还发现了一件我认为有用的东西 - 这个 Twilio 库及其示例 - https://github.com/twilio/video-quickstart-swift/tree/master/ReplayKitExample - 这些人在 video/audio 领域做出了不错的工作捕获,我们可以尝试利用他们的经验。
您可以在此处找到您的 preferedExtension
:
当您准确添加 pickerView.preferredExtension
Bundle Identifier 时,您的应用将显示在录制应用列表中。希望这对您有所帮助!
我正在尝试创建一个 iPhone 应用程序,它不仅可以记录应用程序的屏幕,而且如果置于后台,它会记录屏幕上的所有内容,包括其他应用程序。这就是 "Control Center" 录音的工作原理。不同之处在于我想在没有用户干预的情况下立即访问视频,当然要征得用户的同意。
我在 iOS 12 上使用 ReplayKit2 实现了使用嵌入式广播上传扩展的代码。我还没有在网上找到任何像这样工作的例子。
我在 Bitbucket 上发布了代码:https://bitbucket.org/breelig/replaykitbroadcasttofile/src/master/
我在SO上找到的壁橱类似问题是:ReplayKit stops screen recording in background mode of the application or outside the app?
更新
基于@KaneCheshire 和@AndreyA 的良好回应。下面和其他随机来源,我能够开发出一个有效的解决方案。请查看上面我的 BitBucket link 中的代码。
来自docs:
Apps on a user’s device can share the recording function, with each app having its own instance of RPScreenRecorder. Your app can record the audio and video inside of the app, along with user commentary through the microphone
录制屏幕的唯一其他方法是通过 Broadcast Upload Extension,这需要用户通过控制中心启动它。
我遇到过与您遇到的几乎相同的问题,而且它绝对缺乏任何类型的指南或文档。 我自己解决这个问题的方法是将 nil 设置为我的首选扩展,因此它使 RPSystemBroadcastPickerView 显示所有这些,包括系统屏幕视频捕获:
override func viewDidLoad() {
super.viewDidLoad()
let broadcastPicker = RPSystemBroadcastPickerView(frame: CGRect(x: 100, y: 100, width: 80, height: 80))
broadcastPicker.preferredExtension = nil
view.addSubview(broadcastPicker)
}
我还发现了一件我认为有用的东西 - 这个 Twilio 库及其示例 - https://github.com/twilio/video-quickstart-swift/tree/master/ReplayKitExample - 这些人在 video/audio 领域做出了不错的工作捕获,我们可以尝试利用他们的经验。
您可以在此处找到您的 preferedExtension
:
当您准确添加 pickerView.preferredExtension
Bundle Identifier 时,您的应用将显示在录制应用列表中。希望这对您有所帮助!