android - 从 GPU 纹理保存视频帧

标签 android opengl-es android-mediacodec

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

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

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

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

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

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

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

最佳答案

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

然后我将此上下文与 CodecInputSurface 创建的上下文共享,如 this示例。

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

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

再次感谢 fadden 的帮助:)。

关于android - 从 GPU 纹理保存视频帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36159741/

相关文章:

java - Android-webview 不显示网站

opengl-es - OpenGL ES 2.0着色器,时间变量是如何调用的?

opengl - glGetUniformLocation 对于 USED 变量返回 -1,优化该死

android - 在 Android 上使用 AudioRecord 和 MediaCodec 编码 AAC 音频

android - 是否可以通过MediaCodec.releaseOutputBuffer()来判断解码是否成功

java - 媒体编解码器工作不顺利

Android 前台服务不会停止

android - 我的 "hal_process_report_ind: Bad item quality: 11"有什么值得担心的吗?

swift - 如何在 XCode 中编写 OpenGL ES 片段着色器?

java - 如何从 strings.xml 中获取字符串值并将其放入 arraylist [android]