Cocoa touch 从UIView在iOS上创建平滑的屏幕播放视频

Cocoa touch 从UIView在iOS上创建平滑的屏幕播放视频,cocoa-touch,ios7,Cocoa Touch,Ios7,我一直在尝试在iOS7上录制应用程序内的屏幕广播。有一些很棒的应用程序,例如解释一切(我不想与之竞争、替换或复制),但我看不出它们是如何获得如此流畅的绘图记录的。看起来他们录制成自己的专有格式,然后在用户请求时导出为电影 我尝试了一些库: 。不幸的是,它仍然使用RenderContext,速度非常慢 和(似乎是衍生产品)。后者使用了新的绘图分层方法,但它将iPad的处理器提升到了96%,而且速度太慢,无法流畅地绘图;感觉就像你在用手指拽糖浆 将UIView直接录制到电影中似乎效率太低,无法创

我一直在尝试在iOS7上录制应用程序内的屏幕广播。有一些很棒的应用程序,例如解释一切(我不想与之竞争、替换或复制),但我看不出它们是如何获得如此流畅的绘图记录的。看起来他们录制成自己的专有格式,然后在用户请求时导出为电影

我尝试了一些库:

  • 。不幸的是,它仍然使用RenderContext,速度非常慢
  • 和(似乎是衍生产品)。后者使用了新的绘图分层方法,但它将iPad的处理器提升到了96%,而且速度太慢,无法流畅地绘图;感觉就像你在用手指拽糖浆
将UIView直接录制到电影中似乎效率太低,无法创建一个平滑的、基于绘图的屏幕播放,就像ShowMe或Explain之类的应用程序中所看到的那样


是否有一种方法可以记录平滑的图形,或者在给定的UIView中发生的事情是平滑且可实现的?已经存在的(好的)屏幕播放应用程序如何管理这一点

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


如果不是线程安全的,则不是100%(但是访问图形堆栈是安全的)。不过,这似乎对我有用。我使用了和drawViewHierarchyInRect:AfterScreenUpdate在背景线程中渲染视图的内容。速度惊人,我还没有遇到任何问题

要让私有API做到这一点,请在此处查看答案:,特别是它链接到的项目:。这不是一个可交付的解决方案,但它是一种以性能方式记录屏幕的方式。我不知道这种方式-很高兴知道。你说得对,我想要一个可交付的解决方案。你在后台线程中使用了什么作为记录方法?你能分享一些关于你解决这个问题的方法的更多信息吗?您是如何使用GCD在后台线程上录制的?我要为这件事发疯了=\嘿,伙计们。我使用dispatch\u async从主线程抛出一个方法。这种方法的任务是抓取屏幕的内容,并使用Zoul的解决方案将其放入像素缓冲区。Github上的代码是偶然的吗?面对类似的情况,我很想看看你做了什么。谢谢不,对不起!但是如果您使用Zoul的解决方案和一个后台线程,您应该不会有问题——该解决方案在iOS9中仍然运行良好。别忘了,如果是为了一场比赛,也会有重播。