从 GPU 纹理保存视频帧

Saving video frame from GPU texture

我正在尝试使用 GPU 进行视频处理。到目前为止,我已经成功地从视频中提取帧,并使用 GPU 处理它们。 请记住,我是一个彻头彻尾的 OpenGL 菜鸟。

但是我遇到了以下瓶颈:从 GPU 获取完成的帧并将其录制到视频中。

我知道 this 示例,但它并不完全符合我的需要。

我的 openGL 上下文是 javax.microedition.khronos.egl.EGLContext,这阻止我在 Bigflake 的示例和我的示例之间共享纹理,其中包含我希望写入的纹理视频。

有什么方法可以直接从 GPU 馈送 MediaCodec 编码器数据吗?根据我的研究,似乎只能使用 this 方法将编码器本身提供的表面设置为源。

我能否以某种方式将我的纹理绘制到编码器提供的表面上?

我会根据要求尽量提供任何其他详细信息。

我最终按照@fadden 的建议用 EGL14 替换了我的 EGL10 上下文。

然后我将此上下文与 CodecInputSurface 创建的上下文共享,就像在 this 示例中一样。

最重要的一步是将共享纹理渲染到第二个上下文定义的表面。我是在 this 回答的帮助下完成的。

我希望这对其他人有所帮助,如果需要,我会尝试澄清。

再次感谢 fadden 的帮助:)。