我正在开发一个应用程序,将Quartz Composer的效果应用于QuickTime电影。想想Photo Booth吧,只不过输入的是QuickTime电影,而不是相机。目前,我正在加载一个quicktime电影作为QTMovie
对象,然后有一个NSTimer
发射30次每秒。在某些时候,我会切换到CVDisplayLink
,但NSTimer
现在是可以的。每次NSTimer
触发时,应用程序都会抓取quicktime电影的一帧作为NSImage
,并将其传递给QCRenderer
的图像输入之一。这可以工作,但是非常慢。我试过用[QTMovie frameImageAtTime:withAttributes:error:]
支持的所有格式从电影中提取帧。它们要么很慢,要么根本不工作。
我假设缓慢是由于将图像数据移动到主存储器,然后将其移动回QC来处理它。
不幸的是,使用QC的QuickTime电影补丁对于这个项目来说是不可能的,因为我需要更多的控制电影播放而不是提供。所以问题是,我怎么能移动QuickTime电影图像到我的qrenderer不离开VRAM?
查看v002 Movie Player QCPlugin,它是开源的。不管怎样,你到底还有什么控制手段?