许多设备不在帧缓冲区中存储最终显示数据,因此屏幕捕获方法在这些设备上不起作用。
我想知道如何从Surface Flinger获得最终的成分数据?
如果我们能够实现从surface flinger捕获,那么它可以帮助我们在没有帧缓冲的情况下检索视频和摄像头预览。
发布于 2013-07-30 13:08:01
您不需要或不需要最终合成的视频数据。要录制相机预览,您只需将其输入MediaCodec (需要Android4.1,API16)。在Android4.3(API18)中,随着对MediaCodec的一些调整和MediaMuxer类的引入,这一点变得非常容易。有关示例,特别是CameraToMpegTest,请参阅this page。
可以捕获合成屏幕;例如,系统UI可以捕获最近应用程序菜单的屏幕截图,DDMS/ADT可以捕获用于调试的屏幕截图。然而,你需要适当的权限才能做到这一点,而普通的应用程序没有这样的权限。它被限制为使某些网络钓鱼计划变得更加困难。
在任何情况下,您都无法捕获受DRM保护的视频。连SurfaceFlinger都看不到。
在shell中,您可以使用screencap命令(请参见source code)。
https://stackoverflow.com/questions/15963334
复制相似问题