如何使用Android MediaCodec录制webview活动屏幕?

时间:2013-09-25 14:07:37

标签: android opengl-es webview mediacodec

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

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

有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:0)

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

一旦你能够获得截图,那么你可以创建视频(to create video from image sequence on android),这是一个单独的任务,mediacodec应该帮助。

答案 1 :(得分: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。 Plus Canvas有一大堆绘图方法,可以让你做出时髦,时髦的东西。

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