【问题标题】:How to record webview activity screen using Android MediaCodec?如何使用 Android MediaCodec 记录 webview 活动屏幕?
【发布时间】:2013-09-25 14:07:37
【问题描述】:

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

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

有人可以帮我解决这个问题吗?

【问题讨论】:

标签: android opengl-es webview android-mediacodec


【解决方案1】:

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

一旦您能够获取屏幕截图,您就可以创建视频 (to create video from image sequence on android),这是一项媒体编解码器应该提供帮助的单独任务。

【讨论】:

    【解决方案2】:

    “我假设如果我可以将 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/

    【讨论】:

    • 如何使用这个绘制多张图片?
    • 不同视图上的图像?
    • 画布上的所有东西都会转到 oes 纹理
    猜你喜欢
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 1970-01-01
    • 2014-02-26
    • 2015-10-11
    相关资源
    最近更新 更多