【问题标题】:Creating a smooth screencast video on iOS from UIView从 UIView 在 iOS 上创建流畅的截屏视频
【发布时间】:2013-10-23 17:54:31
【问题描述】:

我一直在努力在 iOS7 上的应用程序中录制截屏视频。那里有一些很棒的应用程序,例如解释一切(我不想与之竞争、替换或复制),但我看不出他们如何设法获得如此流畅的绘图记录。看起来他们以自己的专有格式录制,然后在用户请求时导出为电影。

我尝试了一些库:

  • Glimpse。不幸的是它仍然使用 renderInContext 并且非常慢
  • ScreenCaptureView 和(似乎是衍生产品)UIScreenCaptureView。后者使用了新的 drawHierachy 方法,但它会将 iPad 的处理器拉到 96%,而且速度太慢,无法流畅绘制;感觉就像你在拖着手指穿过糖浆。

将 UIView 直接录制到电影中似乎效率太低,无法像在 ShowMe 或 Explain Everything 等应用程序中看到的那样创建流畅的、基于绘图的截屏视频。

是否有记录平滑绘制的方法,或者在给定的 UIView 中会发生什么平滑且可实现的?已经存在的(好的)截屏应用程序如何管理这个?

【问题讨论】:

  • 对于执行此操作的私有 API,请在此处查看答案:stackoverflow.com/a/11105783/19679,特别是它链接到的此项目:github.com/coolstar/RecordMyScreen。这不是一个可交付的解决方案,但它是一种以高性能方式录制屏幕的方式。
  • 我不知道这种方式 - 很高兴知道。不过你说得对,我想要一个可交付的解决方案。

标签: cocoa-touch ios7


【解决方案1】:

现在看起来很明显,但不是一开始。上述库都使用主线程,所以我实现了自己的解决方案并使用 GCD 在后台线程上录制> 这释放了界面并在录制时停止了糖浆般的效果。

如果它不是线程安全的,则不是 100%(this post seems to indicate that it's notthis post suggests 访问图形堆栈是可以安全访问的)。不过,它似乎对我有用。我使用 Zoul's solution 和 drawViewHierarchyInRect:afterScreenUpdates 在后台线程中呈现视图的内容。它出奇的快,我还没有遇到任何问题。

【讨论】:

  • 你在后台线程中使用了什么录音方式?
  • 您能否分享更多有关您解决此问题的方式的信息?你是如何使用 GCD 在后台线程上录制的?我快要疯了=\
  • 大家好。我使用 dispatch_async 从主线程中抛出一个方法。该方法的工作是获取屏幕内容并使用 Zoul 的解决方案将其放入像素缓冲区。
  • Github上的代码是偶然的吗?面对类似的情况,很想看看你做了什么。谢谢!
  • 不抱歉!但是,如果您使用 Zoul 的解决方案和后台线程,您应该没问题 - 该解决方案在 iOS9 中仍然可以正常工作。如果是游戏,别忘了还有 ReplayKit。
猜你喜欢
  • 2013-03-08
  • 1970-01-01
  • 2014-09-16
  • 2019-08-10
  • 1970-01-01
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多