从 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 的帮助:)。
我正在尝试使用 GPU 进行视频处理。到目前为止,我已经成功地从视频中提取帧,并使用 GPU 处理它们。 请记住,我是一个彻头彻尾的 OpenGL 菜鸟。
但是我遇到了以下瓶颈:从 GPU 获取完成的帧并将其录制到视频中。
我知道 this 示例,但它并不完全符合我的需要。
我的 openGL 上下文是 javax.microedition.khronos.egl.EGLContext,这阻止我在 Bigflake 的示例和我的示例之间共享纹理,其中包含我希望写入的纹理视频。
有什么方法可以直接从 GPU 馈送 MediaCodec 编码器数据吗?根据我的研究,似乎只能使用 this 方法将编码器本身提供的表面设置为源。
我能否以某种方式将我的纹理绘制到编码器提供的表面上?
我会根据要求尽量提供任何其他详细信息。
我最终按照@fadden 的建议用 EGL14 替换了我的 EGL10 上下文。
然后我将此上下文与 CodecInputSurface 创建的上下文共享,就像在 this 示例中一样。
最重要的一步是将共享纹理渲染到第二个上下文定义的表面。我是在 this 回答的帮助下完成的。
我希望这对其他人有所帮助,如果需要,我会尝试澄清。
再次感谢 fadden 的帮助:)。