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