【问题标题】:Output UIView as video stream将 UIView 输出为视频流
【发布时间】:2017-11-06 23:57:53
【问题描述】:

是否可以在 Swift 中将 UIView 的内容/上下文作为直接视频流进行流式传输?我并不是真的在寻找“查看屏幕截图”功能,而不是组装视频,这种解决方案是可能的,但帧速率远非理想。 更新:也许使用 OpenGL 视图?

【问题讨论】:

  • 你的意思是你想要Skype桌面应用程序的屏幕共享功能吗?
  • 我需要在嵌入式外部设备上镜像特定视图的内容。目前我只使用屏幕截图,但这根本不是一个好的解决方案。 :(
  • 有没有人知道 OpenGL 是否可以作为一个选项?我不介意不使用 UIKit ...

标签: ios swift opengl-es


【解决方案1】:

1.查看截图: 您目前对计时功能的解决方案是什么?

我相信如果您使用 CADisplayLink,您可以获得更好的帧速率。在我的项目中,我可以在 iPhone 7Plus 的全屏视频视图中获得约 15-20fps 的实时流。

2。使用 ReplayKit: 我想我不需要以其他方式重写介绍,因为 Apple 的文档非常清晰。

从屏幕录制或流式传输视频,以及来自应用和 麦克风。

使用 ReplayKit 框架,用户可以从屏幕录制视频, 以及来自应用程序和麦克风的音频。然后他们可以分享他们的 通过电子邮件、消息和社交媒体与其他用户进行录音。 您可以构建应用程序扩展以将您的内容直播到 共享服务。 ReplayKit 与 AVPlayer 内容不兼容。

帧率比绘制视图的截图要高很多,但目前只支持截取整个屏幕。

所以如果你想实现只捕获一个视图,可以考虑这样:裁剪输出 CMSampleBufferRef 帧的缓冲区数组。

编辑:如果是将视图镜像到外部屏幕,那么我们可以有其他解决方案,而不是 ReplayKit 或查看屏幕截图。

【讨论】:

  • 非常感谢您的回答托尼!如果可以选择 OpenGL,您是否有任何想法?我不介意不使用 UIKit
  • 你的意思是使用 GLView 在上面渲染东西吗?然后这个问题与原来的问题完全不同。如果您想将视图镜像到外部屏幕,为什么不在另一个窗口上模仿该视图层次结构呢?你能解释一下你的情况吗?如果是关于将视图镜像到外部屏幕,那么我们可以有其他解决方案,而不是 ReplayKit 或查看屏幕截图。
猜你喜欢
  • 1970-01-01
  • 2012-04-24
  • 1970-01-01
  • 1970-01-01
  • 2018-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多