【问题标题】:Android Video Recording of OpenGL surface (GLSURFACEVIEW)OpenGL表面的Android视频录制(GLSURFACEVIEW)
【发布时间】:2015-11-07 00:49:04
【问题描述】:

我正在做一个项目,我们需要记录渲染的 OpenGL 表面。 (例如,如果我们使用 GLsurfaceView,我们需要将表面与来自 MIC 的音频一起记录)

目前我通过将视频源设置为VIDEO_SOURCE_GRALLOC_BUFFER 来使用 MediaRecorder API。

我使用以下sample作为基本代码

我想知道....

  1. 这是正确的方法吗? .有没有更好的替代品?
  2. 链接中给出的示例测试是录制 EGLSURFACE 的音频和视频,但显示不正确。

可能是什么原因?
非常感谢任何帮助/指针。

谢谢,
萨蒂什

【问题讨论】:

    标签: android opengl-es mediarecorder


    【解决方案1】:

    您引用的代码不是示例,而是执行非公共接口的内部测试代码。 SurfaceMediaSource 可能会在未来的版本中更改或消失并破坏您的代码。

    更新: Android 4.3 (API 18) 允许 Surface inputMediaCodecEncodeAndMuxTest 示例演示了将 OpenGL ES 帧记录到 .mp4 文件。

    MediaRecorder 类不接受 Surface 输入,因此在您的情况下,您需要单独录制音频,然后将其与新的 MediaMuxer 类结合。

    更新 #2: Android 5.0 (API 21) 允许 Surface input 到 MediaRecorder,这通常比 MediaCodec 方便得多。如果您需要使用 MediaCodec,Grafika's“record GL activity”中有一个示例显示了使用它记录 OpenGL ES 输出的三种不同方式。

    MediaProjection 类也可用于屏幕录制。

    【讨论】:

    • 您好,感谢您提供的信息。目前我们正在处理降低 FPS 的 glreadpixels。
    • 刚刚登录只是为了说你是救生员。现在,继续寻找一种在 iOS 上也能做到这一点的方法。
    • MediaRecorder Surface Source 太有问题了...stackoverflow.com/questions/51332386/…
    • @user924:您引用的代码创建了一个位图,并使用glTexImage2D() 将其设置为纹理,但不包含任何渲染纹理的代码。如果您不确定如何执行此操作,请使用 [android] 和 [opengl-es] 标签(可能还有 [grafika])提出一个新问题。
    • @fadden 我取得了一些进展github.com/google/grafika/issues/74#issuecomment-406852804 但它绘制了黑色背景的位图(即使我为画布设置了透明色),有什么问题吗? p.s.我使用了这个克隆项目github.com/crearo/grafika
    猜你喜欢
    • 2014-07-19
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 2014-07-01
    • 2012-02-19
    • 2015-04-30
    • 2015-12-31
    相关资源
    最近更新 更多