【问题标题】:Render video effect one time for each frame in Grafika - CameraCaptureActivity在 Grafika 中为每一帧渲染一次视频效果 - CameraCaptureActivity
【发布时间】:2015-05-25 14:48:18
【问题描述】:

我指的是演示应用程序Grafika,其中CameraCaptureActivity 录制视频,同时显示应用效果的实时预览。

在 CameraCaptureActivity 中录制时,应用到来自相机的帧的任何效果都会执行两次。
一次用于预览,一次用于将视频保存到文件中。

由于正在将预览的同一帧保存到文件中,如果可以只执行一次,将节省大量处理。

帧的渲染直接发生在两个表面上,一个是 GLSurfaceView(用于预览),另一个是 MediaCodec(保存部分)。

有没有办法只渲染一次 OpenGL 效果?

如果我可以将一个表面的内容复制到另一个表面,那就太好了。
有没有办法做到这一点?

【问题讨论】:

  • @fadden,请提供您的意见。

标签: android opengl-es surface grafika


【解决方案1】:

是的:您可以渲染到 FBO,然后对输出进行两次 blit,一次用于显示,一次用于记录。

Grafika 的“记录 GL 应用程序”活动演示了解决该问题的三种不同方法(其中一种仅适用于 GLES 3.0+)。 doFrame() 方法完成了工作; draw-once-blit-twice 方法目前是here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 2021-06-17
    • 2017-08-29
    • 2020-11-20
    相关资源
    最近更新 更多