这个问题是关于iOS的。在Android上,使用OpenGL ES 2.0在视图上呈现纹理(用于预览)或将其发送到编码器(用于文件写入)非常容易。我还没有能够在iOS上找到任何教程来实现视频播放(从文件预览视频效果)和视频录制(保存具有效果的视频)和着色器效果。 iOS有什么可能吗?
我发现了一个名为GLCameraRipple的着色器的演示,但我不知道如何更普遍地使用它。例如:AVFoundation
。
[编辑]
在搜索代码段时,我在this tutorial about OpenGL ES, AVFoundation and video merging on iOS上踩踏了。那是另一个有趣的入口。
答案 0 :(得分:3)
它在iOS领域都是非常低级的东西,有很多东西要连接。
您可能感兴趣的主要内容是CVOpenGLESTextureCache
。正如CV前缀所暗示的那样,它是Core Video的一部分,在这种情况下,它的主要兴趣点是class Foo
{
}
,其中"在图像缓冲区和底层纹理对象之间创建一个实时绑定" ;。该文档进一步为您提供了关于使用CVOpenGLESTextureCacheCreateTextureFromImage
这样的图像的明确建议 - 即返回的纹理ID既可用作OpenGL的源也可用作OpenGL的目的地。
绑定图像缓冲区将绑定到CVImageBuffer
,其中一种类型为CVPixelBuffer
。您可以为连接到AVAssetWriterInputPixelBufferAdaptor
的AVAssetWriter
提供像素缓冲区,以便输出到视频。
另一方面,附加到AVAssetReaderOutput
的AVAssetReader
将会CMSampleBuffer
s,可以查询附加的图片缓冲区(如果您有视频进来而不是只需要音频,然后就可以通过纹理缓存映射到OpenGL中。