【问题标题】:Android Capture Surface FlingerAndroid 捕获 Surface Flinger
【发布时间】:2013-04-12 04:52:44
【问题描述】:

许多设备不会将最终显示数据存储在帧缓冲区中,因此屏幕捕获方法在这些设备上不起作用。

我想知道如何从 Surface Flinger 中获取最终的成分数据?

如果我们可以从surface flinger实现捕获,它可以帮助我们在没有帧缓冲区的情况下检索视频和相机预览。

【问题讨论】:

    标签: android surfaceview framebuffer surfaceflinger


    【解决方案1】:

    您不需要或不需要最终合成的视频数据。要录制相机预览,您只需将其输入MediaCodec(需要 Android 4.1,API 16)。在 Android 4.3 (API 18) 中,通过对 MediaCodec 进行一些调整并引入了 MediaMuxer 类,这变得更加容易。示例见this page,尤其是CameraToMpegTest

    可以截取合成画面;例如,系统 UI 会为最近的应用程序菜单抓取屏幕截图,而 DDMS/ADT 可以抓取屏幕截图以进行调试。但是,您需要适当的权限才能执行此操作,而普通应用程序没有。限制某些网络钓鱼计划的难度。

    在任何情况下,您都无法捕捉受 DRM 保护的视频。甚至 SurfaceFlinger 都看不到这一点。

    在 shell 中,您可以使用screencap 命令(请参阅source code)。

    【讨论】:

      猜你喜欢
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多