【问题标题】:Android MediaCodec configure error, crashAndroid MediaCodec 配置错误,崩溃
【发布时间】:2017-02-08 02:33:27
【问题描述】:

我正在尝试使用 mediaCodec 从 openGl ES 表面创建 mp4 视频。我有一个 eglSurface,那个 eglSurface 的源表面是 MediaCodec 输入表面。

我可以为 eglSurface 设置不同的尺寸,当一个尺寸(宽度或高度)太大时:例如宽度 = 5000 和高度 = 512,MediaCodec 崩溃。

这是崩溃日志

android.media.MediaCodec$CodecException: Error 0xfffffc0e 
at android.media.MediaCodec.native_configure(Native Method) 
at android.media.MediaCodec.configure(MediaCodec.java:588)

....

在某些设备(Galaxy s7 edge)上,它不会崩溃,但生成后 videoView 不会播放视频。

对于小尺寸(例如屏幕尺寸),它在所有设备上都能正常工作

【问题讨论】:

    标签: android opengl-es-2.0 android-mediacodec surface egl


    【解决方案1】:

    纹理的宽度太大。 AFAIK,最大纹理尺寸为 4096x4096。根据设备,它可能会低于此值。

    检查这个答案: https://stackoverflow.com/a/4528043/1353758

    【讨论】:

    • 谢谢。还有一个问题。 mediaCodec 是否支持奇数的宽高?
    • 好像不支持。
    【解决方案2】:

    似乎不支持奇数宽度或高度。为了避免在小米 Redme 7 设备上出现Error 0xfffffc0e,我不得不这样做:

    DisplayMetrics metrics = getResources().getDisplayMetrics();
    int width = (metrics.widthPixels / 2) * 2;   
    int height = (metrics.heightPixels / 2) * 2;
    

    【讨论】:

      猜你喜欢
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      • 2013-03-30
      • 1970-01-01
      相关资源
      最近更新 更多