我是GPUImage的新手,但我觉得它非常好:布拉德做得很好。我喜欢过滤器如此干净地连接在一起的方式。
目标
我正在尝试连接以下内容:
*创建一个openGL场景
*应用一些过滤器(与下面的讨论无关)
*录制到视频
问题
我的问题是我不清楚如何连接录音。不幸的是,interacting with opengl-es没有给我足够的细节来解决该怎么做。
ATTEMPT
我从包中的例子中得到两个起点:
* CubeExample - 获取原始openGL以与GPUImage进行交互
* SimpleVideoFileFilter - 通过过滤器将视频文件重新编码为新文件
我开始使用CubeExample,将videoCamera过滤器替换为GPUImageSolidColorGenerator(另外,我不知道如何从没有过滤器开始)。这使我能够创建一个网格,渲染它并与之交互。然后我认为我只是按照filtering and re-encoding a movie中给出的指令添加GPUImageMovieWriter过滤器,但这需要GPUImageMovie(源代码)和编写器之间的协调。由于我不想要相机流或视频文件作为源,但是动画的openGL序列,我不清楚如何做到这一点。我尝试在movieWriter中添加videoInputReadCallback
:
movieWriter.videoInputReadyCallback = ^{
[renderer nextFrame];
[movieWriter newFrameReadyAtTime:renderer.cmTime atIndex:0];
};
其中nextFrame
创建下一帧,完成后调用endProcessing
并设置CMTime。没有newFrameReadyAtTime:atIndex:
调用,它可以正常工作(动画图像按预期呈现在屏幕上),除了它创建一个只有一帧的视频。通过newFrameReadyAtTime:atIndex:
调用,我收到消息
Problem appending pixel buffer at time: 6
在它死之前,这让我觉得movieWriter尚未准备好渲染器呈现它的框架,但我不知道该怎么做。我尝试了很多其他的东西,但无济于事。从与OpenGL-ES的交互中的描述(见上面的链接),看起来应该很容易,但我没有运气。
请求
为了使问题与其他人更相关,如果有人能够发布创建openGL场景(例如三角形)的示例并将其连接到GPUImageMovieWriter以记录到文件,我可能会喜欢它,也许可以将三角形旋转10框架,这样我们就可以看到不仅仅创建了静止图像。
感谢。