【问题标题】:Use ReplayKit to record any app on screen使用 ReplayKit 录制屏幕上的任何应用程序
【发布时间】:2019-02-01 13:37:49
【问题描述】:

我正在尝试创建一个 iPhone 应用程序,它不仅记录应用程序的屏幕,而且如果放入后台,它会记录屏幕上的所有内容,包括其他应用程序。这就是从“控制中心”录制的工作方式。不同之处在于我想在没有用户干预的情况下立即访问视频,当然要征得用户的同意。

我已经在使用嵌入式广播上传扩展的 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 链接中的代码。

【问题讨论】:

  • 为什么对此投反对票?如果没有任何说明原因,似乎毫无用处。
  • 上面的 bitbucket 链接不起作用 - 你能以不同的方式分享代码吗?
  • 是的,Bitbucket 不起作用,看不到代码。能否提供一个github地址

标签: ios iphone replaykit


【解决方案1】:

来自docs

用户设备上的应用可以共享录音功能,每个 应用程序拥有自己的 RPScreenRecorder 实例。您的应用可以录制 应用内的音频和视频,以及用户评论 通过麦克风

记录屏幕的唯一其他方法是通过Broadcast Upload Extension,这需要用户通过控制中心启动它。

【讨论】:

  • 谢谢@KaneCheshire。我正在使用嵌入在我的应用程序中的广播上传扩展。宿主应用加载扩展,用户接受录屏请求,扩展接管处理视频样本。
  • 我想通了。我必须从控制中心的“屏幕录制”按钮开始屏幕录制。要选择我的广播上传扩展,我必须按住“屏幕录制”按钮,直到出现广播扩展列表。
  • 是的,对不起,我本来可以更清楚的。不过,我确实觉得让他们的 UI 更明显一点是 Apple 的工作!
【解决方案2】:

我遇到了与您几乎相同的问题,而且绝对缺少任何类型的指南或文档。 我自己解决这个问题的方法是将 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——这些家伙在视频/音频捕捉领域做得不错,我们可以尝试利用他们的经验。

【讨论】:

  • 非常有趣。我试过这个,但将 preferredExtension 设置为我的扩展包 ID。 self.pickerView!.preferredExtension = "com.breelig.ReplayKitBroadcastToFile.BroadcastLocal" 它确实将视频发送到我的广播扩展,但我的代码中存在一个错误,导致视频被损坏。如果我能弄清楚,我会发布结果。
【解决方案3】:

您可以在这里找到您的确切preferedExtension

当您准确添加 pickerView.preferredExtension 时,您的应用程序将显示在录制应用程序列表中。希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多