我正致力于桌面视频捕捉。我实现了快速工作的截图抓取功能。然后我通过addImage将每个屏幕截图添加到QTMovie:forDuration:withAttributes:但它工作得很慢,所以当我尝试创建全屏捕获(例如1920x1080)时,我只有1.2 fps。我尝试在主线程上收集屏幕截图并在其他线程上处理它们(添加到QTMovie)并且我获得了非常快速的内存消耗(检索到的屏幕截图是未压缩的)。有任何想法吗?感谢。
答案 0 :(得分:3)
我同意addImage:forDuration:withAttributes:
不是逐帧捕获的好方法。我们在QTKit
框架内部也遇到了内存泄漏,当它用于捕获大量帧时。
使用Quicktime
框架可以获得更好的结果。特别是AddMediaSample2()
功能,可以将图像添加到电影中。
如果您使用一个线程来获取帧而另一个线程将数据添加到电影中,则需要小心。当你很快拥有很多帧时,你可以达到这一点,但你的对象无法以相同的速度将它们全部添加到电影中。为了继续前进,您可能需要删除某些帧。
通常,捕获是一个棘手的过程。祝你好运。