ios - 当我的 iOS 应用程序在后台使用 ReplayKit 时进行屏幕录制
问题描述
我试过广播扩展。我已经通过目标添加了该扩展。但是,我不知道如何记录我的应用程序何时处于后台。
我尝试记录的两种方式:
通过控制中心:我可以看到我的应用程序的目标名称,选择该名称后,然后我通过单击开始录制,然后单击Start Broadcast
下一步Stop Record
,但我的视频没有存储在相机胶卷或我的应用程序中。Ref Link
: ReplayKit 的 RPSystemBroadcastPickerView 不显示首选扩展
通过我的应用程序:一旦按下开始按钮,开始录制,我试图通过单击主页按钮从我的应用程序录制背景,显然录制已停止。Ref Link
:https ://medium.com/@giridharvc7/replaykit-screen-recording-8ee9a61dd762 。
解决方案
没有“直接”的方式在您的应用程序中存储视频,而它在后台。ReplayKit 版本 2 允许您在调用“广播上传扩展”的应用扩展中获取视频样本缓冲区片段。当您说“通过控制中心”时,这意味着您开始广播(而不是录制),同时 iOS 找到您的应用程序扩展(而不是您的应用程序)并启动它,然后开始向扩展发送视频样本缓冲区。在此步骤中,您需要决定如何处理这些缓冲区。
我可以为您提出两种解决方案:
- 您可以尝试将缓冲区传输到服务器(并在主应用程序启动时下载视频)
- 您可以尝试使用 App Groups 将缓冲区保存到文件中(与主应用程序共享此数据),您可以在 此处找到示例。
但是您需要知道广播扩展是为缓冲区传输而设计的,而不是存储或重新渲染或压缩或重新编码缓冲区。扩展基于 CPU 时间和内存使用 (±50 MB) 有很多限制,您可以尝试在那里做任何事情,但如果它是“重”操作 iOS 将关闭扩展。
推荐阅读
- python - CampaignPerformanceReportRequest 能否返回所有广告系列?
- iis - 来自虚拟目录 IIS 的图片不会加载
- r - 基于原始 CSV 文件名称的绘图名称
- node.js - 在带有 EJS 模板的 Node express 应用程序中使用 React 组件 UI
- xamarin.forms - Xamarin Forms:DisplayAlert 背景点击触发取消事件
- flutter - 错误:没有为类型 'RSSParser' 定义 getter 'title'
- python - 在同一日期范围内过滤 df
- docker - pod 部署后未反映的更改
- linux - Xfoil 正在运行但不会绘制数据,“无法打开显示...正在中止”
- custom-wordpress-pages - 使用 pagebuilder 主题(主要是 Elementor)时未显示自定义页面模板