【问题标题】:Android, Native OpenGL/OpenMAX, Screen captureAndroid, Native OpenGL/OpenMAX, 屏幕截图
【发布时间】:2014-12-10 06:53:45
【问题描述】:

用例

使用 USB 将 Android 屏幕镜像到 PC

潜在(原生)实现方法

  1. 使用 Android 开源,根据需要修改 screenrecord,然后使用 ADB 在您的 Android 设备上重新安装
  2. 使用众所周知的原生 API,例如 OpenGL/OpenMAX 来截屏

讨论

方法 #1 肯定会起作用(在 shell 帐户下),然而,每次更新 Android 操作系统时,都需要更新自定义代码以保持随着操作系统的变化,方法#2 API 保持不变,无需担心操作系统的变化,问题是是否可以仅使用 OpenGL/OpenMAX 实现镜像?

问题

如上所述,通过 USB 镜像 android 屏幕的最佳方法是什么?

【问题讨论】:

    标签: android opengl-es-2.0 android-source openmax


    【解决方案1】:

    Android 5.0“Lollipop”附带的screenrecord 可以通过 ADB 发送原始 H.264。命令行如下所示:

    adb shell screenrecord --output-format=h264 - | <player>
    

    bigflake page 上有一些详细信息。我用它来将屏幕镜像到 Linux 工作站上,但不幸的是我没有保存 VLC/mplayer 命令行。部分玩家建议here。

    您可以尝试制作未压缩的帧 (--output-format=raw-frames),但帧速率适中,即使屏幕很小,也很容易使 ADB 连接不堪重负。

    源代码是here。

    【讨论】:

    • 我的屏幕记录工作正常,这种方法的问题在于,为了绕过 3 分钟的持续时间限制,您需要对代码进行路径处理并重新编译,这会导致每个人都产生维护成本当操作系统更新时,使用传统 api 的解决方案将是最佳的/我正在寻找的
    【解决方案2】:

    正如fadden 所建议的那样,我最终通过sreeenrecord 进行了修补,禁用了时间限制并添加了一些我自己的代码(启用 ADB over USB 路由),它可以工作,但是,每次操作系统运行时都需要维护更新了,我希望有一种方法可以将 Android Java 框架用作 ADB Shell 工具,因为这将大大减少我按下的未记录按钮的数量...

    【讨论】:

    • 你能发布一个让这个运行的代码示例吗?我正忙着把这方面的稀疏知识结合起来让我的工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 2021-07-12
    • 1970-01-01
    相关资源
    最近更新 更多