【问题标题】:MediaCodec::CreateByType "video/avc" fails on nexus 7MediaCodec::CreateByType "video/avc" 在 nexus 7 上失败
【发布时间】:2014-05-21 22:30:53
【问题描述】:

我正在尝试在 nexus 7 设备中使用 MediaCodec 对 h264 进行编码,并且在重新运行(关闭后)我的编码器进程多次后,我在尝试创建 MediaCodec 时失败了 (MediaCodec::CreateByType(looper, "video/avc", true))。日志显示:

E/OMX-VENC-720p(  181):  Is component secure 0
E/OMX-VENC-720p(  181): ERROR: Omx_venc::Comp Init Returning failure
E/OMX-VENC-720p(  181):
E/OMX-VENC-720p(  181): ERROR: venc_open failed
E/OMX-VENC-720p(  181):
E/OMX-VENC-720p(  181):  Destroy C2D instance

重启设备后,我可以再次创建编码器。 这是 nexus 硬件编码器中的错误,还是未正确释放编码器的结果?

【问题讨论】:

  • Nexus 7 (2012) 还是 (2013)?哪个版本的 Android?
  • nexus 2013,安卓 4.4。
  • fadden,我也尝试过使用 Grafika 并且应用程序崩溃(无法创建编码器)

标签: android android-mediacodec nexus-7


【解决方案1】:

这不是预期的。

如果你抓到最新版的Grafika,你可以在底部附近找到一个“Codec open test”活动。当您运行它并单击“开始”时,它将尝试打开尽可能多的编解码器。如果单击“Halt”,它将停止VM,并重新启动应用程序。

使用运行 4.4.2 的 Nexus 7 (2013),我第一次点击“开始”时,我看到创建了四个编解码器。如果我再次击中它,我会得到零。如果我使用 DDMS 导致 GC 或停止该过程,它会返回到四。它应该“卡住”的唯一方法是如果应用程序保持几个打开状态并且仍在运行。

无论如何,请确保在应用暂停时释放编解码器。当然,如果您的应用程序崩溃,这是不可能的,但在正常操作中,当您的应用程序不在前台积极使用它们时,您不希望保留硬件资源。如果某处存在阻止系统清理的错误,则及时发布它们更为重要。

【讨论】:

    猜你喜欢
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    相关资源
    最近更新 更多