3

我是 GPUImage 的新手,但我认为它真的很好:布拉德干得好。我喜欢过滤器如此干净地链接在一起的方式。

目标
我正在尝试连接以下内容:
* 创建一个 openGL 场景
* 应用一些过滤器(与下面的讨论无关)
* 录制到视频

问题
我的问题是我不清楚如何连接录音。不幸的是,与 opengl-es 的交互并没有给我足够的细节来弄清楚该怎么做。

尝试
我从包中的示例有两个起点:
* CubeExample - 让原始 openGL 与 GPUImage 交互
* SimpleVideoFileFilter - 通过过滤器将视频文件重新编码为新文件

我从 CubeExample 开始,用 videoCamera 过滤器替换了 GPUImageSolidColorGenerator(顺便说一句,我不知道如何从没有过滤器开始)。这使我能够创建网格、渲染它并与之交互。然后我想我只需按照过滤和重新编码电影中给出的说明添加 GPUImageMovieWriter 过滤器,但这需要 GPUImageMovie(源)和编写器之间的协调。因为我不想要一个相机流或一个视频文件作为源,而是一个动画的 openGL 序列,我不清楚如何去做。我试过videoInputReadCallback在movieWriter中添加一个:

movieWriter.videoInputReadyCallback = ^{
    [renderer nextFrame];
    [movieWriter newFrameReadyAtTime:renderer.cmTime atIndex:0];
};

where nextFrameis 创建下一帧,endProcessing完成后调用并设置 CMTime。如果没有newFrameReadyAtTime:atIndex:调用,它可以正常工作(动画图像按预期呈现到屏幕上),只是它创建了一个只有一帧的视频。通过newFrameReadyAtTime:atIndex:电话,我收到了消息

Problem appending pixel buffer at time: 6

在它死之前,这让我认为 movieWriter 还没有准备好让渲染器呈现它的帧,但我不知道该怎么做。我已经尝试了很多其他的东西,但无济于事。从与 OpenGL-ES 交互(见上面的链接)中的描述来看,它似乎应该很容易,但我没有任何运气。

请求
为了使问题与其他人更相关,如果有人能够发布一个创建 openGL 场景(例如三角形)并将其连接到 GPUImageMovieWriter 以记录到文件的示例,我希望它可以旋转三角形10 帧,以便我们可以看到创建的不仅仅是静止图像。

谢谢。

4

0 回答 0