从GPU纹理保存视频帧

时间:2016-03-22 16:16:53

标签: android opengl-es mediacodec

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

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

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

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

有没有办法直接从GPU提供MediaCodec编码器数据?根据我的研究,似乎只能使用this方法将编码器本身提供的曲面设置为源。

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

我希望这对任何人都有帮助,如果有要求,我会尝试澄清。

再次感谢fadden的帮助:)。