【问题标题】:Maximum number of simultaneous MediaRecorder instances on android?android上同时的MediaRecorder实例的最大数量?
【发布时间】:2015-05-08 01:59:57
【问题描述】:

我创建了同时记录设备屏幕(使用MediaProjection)API 和来自相机的视频的android 应用程序。我在这两种情况下都使用 MediaRecorder。我需要一种方法来确定设备是否真的能够同时录制两个视频流。我假设可以在给定设备上同时编码的流数量有一些限制,但我在 android 平台上找不到任何 API 来查询该信息。

到目前为止我发现的东西:

MediaRecorder.release() 的文档建议尽快发布 MediaRecorder: "即使支持同一编解码器的多个实例,当同时使用不必要的多个实例时,可能会出现一些性能下降。" 这表明编码实例的数量存在限制,直接限制了 MediaRecorder 的数量。

我编写了创建 MediaRecorders(配置为使用 MPEG4/H264)并循环启动它们的测试代码 - 在 Nexus 5 上,当在第 6 个实例上调用 prepare() 时,它总是以 java.io.IOException: prepare failed 失败。这表明您在 Nexus5 上只能拥有 5 个 MediaRecorder 实例。

【问题讨论】:

    标签: android mediarecorder


    【解决方案1】:

    我不知道您可以查询此信息的任何内容,尽管 Lollipop 中可能有一些我没有看到的内容。

    硬件编解码器实例的数量存在限制,这在很大程度上取决于硬件带宽。设备可以处理多少流并不是一个简单的问题——有些设备可能能够编码两个 720p 流,但不能编码两个 1080p 流。

    在某些设备上,如果硬件资源不足,编解码器可能会退回到软件实现。事情会奏效,但会慢得多。 (我在 H.264 解码中看到过这种情况,但我不知道它是否也发生在编码中。)

    我认为 CTS 没有最低系统要求。知道所有设备都可以解码两个 1080p 流并同时编码一个 1080p 会很有用,这样就可以为所有设备制作视频编辑器,但我不知道是否添加了这样的东西。 (一些非常便宜的设备很难满足这一点。)

    【讨论】:

      【解决方案2】:

      我认为这真的取决于设备和内存容量......你可以尽可能多地读取屏幕和凸轮的缓冲区,但一次只能读取一次,而不是同时读取我认为可以防止并发,但老实说我不真的很确定

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多