5

我的任务是在 webview 中记录用户活动,换句话说,我需要在用户在 webview 中导航时创建一个 mp4 视频文件。相当具有挑战性 :) 我在 Android 4.3 中引入了 MediaCodec 的字体:被扩展为包括一种通过 Surface 提供输入的方法(通过 createInputSurface 方法)。这允许输入来自相机预览或 OpenGL ES 渲染。我什至找到了一个可以录制用 opengl 编写的游戏的示例:http: //bigflake.com/mediacodec/

我的问题是:我如何记录 webview 活动?我假设如果我可以将 webview 内容绘制到 opengl 纹理,那么一切都会好起来的。但我不知道该怎么做。

有人可以帮我吗?

4

2 回答 2

0

为什么不WebView.onDraw先尝试,而不是使用 OpenGL?后一种方法可能更复杂,并且并非所有设备都支持。

一旦您能够获得屏幕截图,您就可以创建视频(从 android 上的图像序列创建视频),这是一个媒体编解码器应该提供帮助的单独任务。

于 2014-10-14T09:09:25.313 回答
0

“我假设如果我可以将 webview 内容绘制到 opengl 纹理”。

有可能的。

SurfaceTexture 基本上是您进入 OpenGL 层的入口点。它使用 OpenGL 纹理 ID 进行初始化,并在该纹理上执行所有渲染。

将视图呈现到 opengl 的步骤:

1.初始化一个OpenGL纹理

2.在 OpenGL 上下文中构造一个带有纹理 ID 的 SurfaceTexture。使用 SurfaceTexture.setDefaultBufferSize(int width, int height) 确保纹理上有足够的空间供视图渲染。

3.用上面的SurfaceTexture创建一个Surface。

4.在View的onDraw中,使用Surface.lockCanvas返回的Canvas进行视图绘制。显然,您可以使用任何 View 来执行此操作,而不仅仅是 WebView。加上 Canvas 有一大堆绘图方法,让你可以做一些时髦、时髦的事情。

源代码可以在这里找到:https ://github.com/ArtemBogush/AndroidViewToGLRendering你可以在这里找到一些解释:http ://www.felixjones.co.uk/neo%20website/Android_View/

于 2017-03-03T12:03:25.997 回答