我正在进行桌面视频捕获。我实现了抓屏功能,可以快速运行。然后,我通过addImage:forDuration:withAttributes将每个屏幕快照添加到QTMovie:但是它的工作速度非常慢,所以当我尝试创建全屏捕获(例如1920x1080)时,我只有1.2 fps。我试图在主线程上收集屏幕截图并在其他线程上对其进行处理(添加到QTMovie),但是我的内存消耗增长非常快(检索到的屏幕快照未压缩)。有任何想法吗?谢谢。
最佳答案
我同意addImage:forDuration:withAttributes:
并不是逐帧捕获的好方法。当QTKit
框架用于捕获许多帧时,我们也经历了内存泄漏。
使用Quicktime
框架可以获得更好的结果。特别是AddMediaSample2()
函数可将图像添加到影片中。
如果使用一个线程获取帧,而使用另一个线程将数据添加到影片,则需要小心。很快就会出现很多帧,但是对象无法以相同的速度将它们全部添加到影片中时,您可能会想到这一点。为了继续前进,您可能需要丢弃某些帧。
通常,捕获是一个棘手的过程。祝好运。
关于macos - QTMovie addImage性能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8317869/