【问题标题】:Faster command than "adb shell screencap"?比“adb shell screencap”更快的命令?
【发布时间】:2017-05-10 18:40:19
【问题描述】:

我正在使用以下命令捕获 Android 模拟器屏幕:

adb shell screencap -p /sdcard/screencap.png

但是执行命令和保存 png 文件大约需要 500 毫秒,有没有更快的方法来捕获屏幕数据?我真的不需要 PNG 文件本身,只需要“图像数据”,因为我只是创建 PNG 并将其加载到 .NET Bitmap 类中以读取像素颜色。

我需要一种更快的方式来捕获图像,因为我需要每秒大约 10 张图像来与模拟器屏幕进行交互,因此录制屏幕以生成视频文件对我来说不是一个“解决方案”。

谢谢

【问题讨论】:

  • 您在哪里使用数据?您是从设备中提取 PNG,然后在其他地方处理它吗?
  • 我用的是逍遥模拟器,所以当我保存到/sdcard/时,它会保存在电脑上的共享文件夹中
  • 你有没有联系逍遥开发者提出你的问题?
  • 嗯,其实这不是 MEmu 的问题,它与我必须使用 ADB 交互的所有模拟器有关,例如 Nox、Memu、Droid4X 等。搜索更多关于此的内容,我看到有人说主要问题是生成.png文件,而不是真正获取屏幕帧缓冲区(生成.png),但我不确定如何使用'screencap'而不生成真正的.png,或者即使它真的可能
  • "但我不确定如何在不生成真正的 .png 的情况下使用 'screencap'" - 你不能。您可以使用像Droid@Screen 这样的程序使用的未记录(?)工具API。或者,按照 Ben 的建议,让 Android 应用使用媒体投影 API 并通过网络向您发送屏幕截图。

标签: android shell adb


【解决方案1】:

老问题,但你可以试试adb shell screencap screen.dump。这将跳过将文件转换为 png 的步骤,并生成一个可以用 Hex 读取的文件。

有 12 个字节的标题,然后文件以位置 (0,0)(左上角)的像素颜色为 RGBA。

文件的最终大小取决于显示器的大小。

【讨论】:

  • 以及如何最终将其转换为 png/jpg 或创建 Bitmap 对象?
【解决方案2】:

我还在使用 Memu 模拟器进行图像识别。 如果您使用的是 Windows,您可以使用各种工具来编写 Memu 窗口特定句柄的屏幕截图功能。

我通过调用本机 Windows 函数获得大约 24-36FPS 的屏幕截图。

【讨论】:

  • 欢迎来到 Stack Overflow。不幸的是,“您可以使用各种工具”和“[调用]本机 Windows 功能”并没有为这个问题提供任何实际答案。您需要在此答案中添加更多细节以使其实际有用。
【解决方案3】:

您可以使用adb shell screencap -j /sdcard/screencap.jpg

它将图像保存为 jpg 格式,对我来说这比 png 快 3 倍。

【讨论】:

    【解决方案4】:

    AFAIK,除非您在目标设备上编写和运行应用程序,否则不存在这样的方法。然后通过网络发回。在模拟器情况下,使用adb forward

    更多详情请见createVirtualDisplay

    【讨论】:

    • “adb forward”截屏会更快吗?或者这只是与安卓设备/模拟器通信的另一种方式?
    • @IgorM 查看adb 的帮助。它只是端口转发,理想的最大速度低于 480Mbps(典型的 USB 2.0)。大多数时候它提供超过 20Mbps 的速度,我认为它足以满足您的需求。
    【解决方案5】:

    我真的不需要 PNG 文件本身,只需要“图像数据”

    如果您不想保存文件,则无需指定图像位置:

    adb shell screencap -p
    

    图像数据是 PNG 格式,打印为字节数组。这是您使用 adb 命令所能达到的最快速度(在我的装有 Bluestacks 4.2 的 PC 上通常为 150 毫秒)。

    如果您仍然想要更快的速度,使用win32 api 的这种方法可能是最快的。您需要确保您的模拟器窗口设置为正确的大小并且在屏幕上可见。

    【讨论】:

      猜你喜欢
      • 2014-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多