【问题标题】:Record GLSurfaceView on < Android 4.3在 < Android 4.3 上录制 GLSurfaceView
【发布时间】:2014-04-22 20:29:51
【问题描述】:

我正在开发一个应用程序,用于实时将效果应用于相机图像。目前我将MediaMuxer 类与MediaCodec 结合使用。这些类是使用 Android 4.3 实现的。 现在我想重新设计我的应用程序并使其兼容更多设备。我在互联网上找到的唯一东西是 FFmpeg 和 OpenCV 的组合,但我读到如果我想使用高分辨率,帧率不是很好。是否有可能在不使用MediaMuxerMediaCodec 的情况下在捕获相机图像的同时实时编码视频?

PS:我将 GLSurfaceView 用于 OpenGL 片段着色器效果。所以这是必须的。

【问题讨论】:

    标签: android opengl-es camera glsurfaceview


    【解决方案1】:

    软件编解码器不会以中等帧速率对大帧进行实时编码。

    MediaCodec 是在 4.1 中引入的,所以只要你能处理various problems,你仍然可以利用硬件加速压缩。如果你想要一个 .mp4 文件,你仍然需要 MediaMuxer 的替代品。

    一些商业游戏记录器,例如KamcordEveryplay,声称可以在Android 4.1+ 上运行。所以这在技术上是可行的,虽然我不知道他们是否使用非公共 API 将表面直接馈送到视频编码器。

    在 Jellybean 之前的 Android 中,它只会变得更难。

    (对于在 >= 4.3 中记录 GL 感兴趣的任何人,请参阅 EncodeAndMuxTestGrafika's“记录 GL 应用程序”。)

    【讨论】:

    • ">= 4.3" 示例适用于通过搜索找到问题的其他人。对您而言,解决方案(以及是否有解决方案)取决于您所针对的 API 级别、是否要使用 NDK 以及您是否愿意使用非公共 API。有一个存在证明可以在 API 4.1 上解决某些(也许不是全部)设备的问题。您可能需要使用 SurfaceMediaSource.cpp / GraphicBufferSource.cpp 作为起点。
    • 我要至少支持Android 4.0
    猜你喜欢
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    相关资源
    最近更新 更多