gpt4 book ai didi

iphone - OpenGL ES : storing a series of textures as a movie file

转载 作者:行者123 更新时间:2023-12-03 20:34:37 24 4
gpt4 key购买 nike

我一直在从 iPhone 摄像头抓取实时视频帧,并将它们作为纹理应用到平面 OpenGL 几何体上,以便使用着色器来处理摄像头输入。有谁知道是否可以获取处理后的纹理并将其存储在电影文件中?

这似乎需要大量的处理能力,而且我不确定最好的处理方法是什么——或者是否可能。这里的动机是能够对从相机抓取的视频进行有趣的着色器效果,然后存储结果以与其他人分享。

预先感谢您的想法。

最佳答案

我无法评论性能,但您想要做的是:

  • 创建一个 AVAssetWriter(它可以获取传入的样本并以 H.264 格式写出它们;当前的 iOS 版本似乎不支持其他文件格式)
  • AVAssetWriterInput 附加到 Assets 编写器以提供视频帧(因为 Assets 编写器采用一个或多个输入,每个输入提供 Assets 的不同方面);
  • AVAssetWriterInputPixelBufferAdaptor 附加到 Assets 编写器输入,以便您可以在输入处推送像素缓冲区。您需要告诉 Assets 编写者输入,它需要实时媒体数据。这样做告诉它只是尝试随时准备好输入。您可以在提供帧时指定帧时序,因此不会对代码的其余部分提出性能要求。

从那里,您只需将 CVImageBuffers 推送到像素缓冲区适配器即可。 OS X 中有一个方便的 Core Video OpenGL 缓冲区类型,但 iOS 上似乎不存在。相反,您需要使用 glReadPixels 以及 CVPixelBufferCreate 等,锁定像素缓冲区并直接写入其基地址。希望您能得到可以直接传递给 OpenGL 的东西,而无需在中间打乱字节。

假设 iPhone 有一个专用的 H.264 编码器,主要的性能瓶颈可能是 glReadPixels,导致帧缓冲区中的任何内容都需要为 CPU 传输和重新格式化。如果您将其全部设置好并且结果看起来很慢,我会首先调查那里。

关于iphone - OpenGL ES : storing a series of textures as a movie file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4889300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com