当前位置: 首页 > 知识库问答 >
问题:

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

孙志
2023-03-14

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

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

任何人都可以帮我吗?

共有2个答案

唐麒
2023-03-14

“我假设如果我能把webview内容画成opengl纹理”。

这是可能的。

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

将视图呈现为 opengl 的步骤:

1.初始化OpenGL纹理

2.WithinOpenGL上下文构造一个带有纹理id的SurfaceTexture。使用SurfaceTexture.setDefaultBufferSize(整数宽度,整数高度)来确保纹理上有足够的空间来渲染视图。

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

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

源代码可以在这里找到: https://github.com/ArtemBogush/AndroidViewToGLRendering 你可以在这里找到一些解释 Android_View:

茅和玉
2023-03-14

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

一旦您能够获得屏幕截图,您就可以创建视频(从Android上的图像序列创建视频),这是一个单独的任务,mediacodec应该会有所帮助。

 类似资料:
  • Android在Kitkat和Lollipop上获得了一个新的API,用于视频捕捉屏幕。您可以通过ADB工具或代码(从Lollipop开始)来完成。 自从新的API发布以来,许多应用程序都使用了这一功能,允许录制屏幕,微软甚至还开发了自己的Google Now On tap竞争对手应用程序。 使用ADB,您可以使用: 你甚至可以在Android Studio内部完成这项工作。 我找不到任何关于如何

  • 在我的应用程序中,我创建了一个活动,它显示简单的hello world消息。在“AndroidManifest.xml”文件中,我将标签属性设置为“welcome”:

  • 收到通知后,我启动一个活动,加载一个webview。它第一次运行良好,但当我第二次收到通知时,它会在现有的webview上打开一个新的webview。 我希望能够把活动放在前面,而不是创建一个新的网络视图,因为页面已经在后台打开了。 处理通知的函数: 我的网络视图活动: 我尝试使用webview的SaveInstanceState和restoreState,但没有成功。

  • 是否可以从同一活动中录制当前跑步活动的屏幕视频? 我知道如何采取当前活动的屏幕截图,但不知道采取屏幕视频记录。我该怎么开始呢?我不知道如何开始。

  • 对不起,我是android应用程序的新手。创造。我已经提到了几乎所有的解决方案,但这就是不工作...我没有看到任何问题,在下面的简单代码。我的应用程序很简单,加载启动屏幕,然后加载WebView。下面的问题是什么? [评论]请。看下面,我已经声明了。怎么了? java:这将加载WebView。 } activity_main.xml:

  • 问题内容: 我的主类从文件加载配置,然后显示一个框架。我想制作一个带有进度条(如Eclipse)的启动画面,以便在加载文件时进度会增加,并且在加载文件后启动画面会消失。然后我的主机被加载。 MainClass代码: 我在Swing方面没有太多经验,所以请提出建议。 更新: 我发现了以下示例,但没有什么问题: 当计数器达到指定的数字时,它应停止在(300)位置,直到不停止计时器并隐藏启动画面而永远计