我如何以编程方式将QuickTime电影管道到Quartz Composer输入



我正在开发一个应用程序,将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,它是开源的。不管怎样,你到底还有什么控制手段?

相关内容

  • 没有找到相关文章