【问题标题】:build screenrecord for android 4.2为 android 4.2 构建屏幕记录
【发布时间】:2014-05-12 02:18:40
【问题描述】:

是否可以构建 screenrecord 二进制文件以在 4.2 上运行,还是缺少太多的 api? 我可以解决更改的 api 和库吗?因为据我了解,主要部分存在于 4.2 中(如 mediacodec)。我不需要多路复用器,我可以在 4.2 中使用我自己的多路复用器。

【问题讨论】:

    标签: android android-ndk android-source android-mediacodec


    【解决方案1】:

    这会很困难。

    screenrecord 在 Android 4.4 中提供,但除了一个次要 API(用于拆除虚拟显示器)之外,它所需的一切都在 Android 4.3 中提供。

    Android 4.2 缺少一些重要的东西。 MediaMuxer 类不存在,MediaCodec 还没有 createInputSurface() 调用。正如您所指出的,解决前者并不难,但对于后者,您要么必须提供 MediaCodec 原始 YUV 缓冲区(这在 4.3 之前很难做到,并且会降低您的帧速率),或者(因为 @987654329 @ 已使用私有内部 API)直接与 libstagefright 接口以实现您自己的“元数据模式”处理。

    我不确定虚拟显示器在 4.2 中的状态是什么,但您还需要它们才能完全工作。

    KamcordEveryplay 这样的公司宣传他们可以将游戏录制回 Android 4.1,但我怀疑他们正在录制 OpenGL ES 渲染(而不是虚拟显示输出)并自己做很多内部管道.

    【讨论】:

    • 有没有办法让屏幕帧比原始 YUV 更小?也许 jpeg 或 png ?
    • 在 4.2 中,miracast 无法从 gpu 进行快速屏幕截图吗?
    • fadden,有没有 irc 频道可以讨论 screenrecord 相关问题?
    • 你不能从合成器中得到比 YUV 小的,所以你必须自己压缩它,这需要太长时间。 4.2 中的 Miracast 流是直接使用 libstagefright 的示例;请参阅android.googlesource.com/platform/frameworks/av/+/…(这是实现 MediaCodec Surface 输入的 GraphicBufferSource.cpp 的起点)。不了解 IRC 频道,但有许多博客文章来自那些研究过 stagefright 和 SurfaceMediaSource 的人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多