Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Android MediaCodec记录webview活动屏幕?_Android_Opengl Es_Webview_Android Mediacodec - Fatal编程技术网

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

如何使用Android MediaCodec记录webview活动屏幕?,android,opengl-es,webview,android-mediacodec,Android,Opengl Es,Webview,Android Mediacodec,我的任务是在webview中记录用户活动,换句话说,当用户在webview中导航时,我需要创建一个mp4视频文件。相当具有挑战性:) Android 4.3中引入的MediaCodec:中的I字体被扩展为包含一种通过曲面(通过createInputSurface方法)提供输入的方法。这允许输入来自摄影机预览或OpenGL ES渲染。 我甚至找到了一个可以录制opengl编写的游戏的示例: 我的问题是:如何录制webview活动?我假设,如果我可以将webview内容绘制到opengl纹理,那么一

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

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

有人能帮我吗

为什么不先试试,而不用OpenGL?后一种方法可能更复杂,并非所有设备都支持

一旦您能够获得屏幕截图,那么您就可以创建视频(),这是一项单独的任务,mediacodec应该会提供帮助。

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

这是可能的

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

将视图渲染到opengl的步骤如下:

1.初始化OpenGL纹理

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

3.创建使用上述SurfaceTexture构造的曲面

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


源代码可以在这里找到:您可以在这里找到一些解释:

一种方法是创建虚拟显示并捕获输出。但是,从Android 4.3开始,您需要使用非公共的本机API来实现这一点。来源在这里:我怎么能用这个画多幅图像?在不同视图上的图像?画布上的所有东西都将转到纹理