我正在开发一个将 Quartz Composer 效果应用于 QuickTime 电影的应用程序。想想 Photo Booth,除了输入的 QuickTime 电影,而不是相机。目前,我正在加载一个快速电影作为QTMovie
对象,然后NSTimer
每秒触发 30 次。在某个时候,我会切换到CVDisplayLink
,但NSTimer
现在还可以。每次NSTimer
触发时,应用程序都会抓取快速电影的一帧作为 anNSImage
并将其传递给QCRenderer
的图像输入之一。这有效,但速度极慢。我已经尝试以所有[QTMovie frameImageAtTime:withAttributes:error:]
支持的格式从电影中提取帧。它们要么真的很慢,要么根本不工作。
我假设缓慢是由于将图像数据移动到主内存,然后将其移回 QC 处理它造成的。
不幸的是,对于这个项目来说,使用 QC 的 QuickTime 电影补丁是不可能的,因为我需要比提供的更多的电影播放控制。所以问题是,如何在不离开 VRAM 的情况下将 QuickTime 电影图像移动到 QCRenderer 中?