Android MediaCodec配置错误,崩溃

时间:2016-09-29 16:45:41

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

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

我可以为eglSurface设置不同的尺寸,当一个尺寸(宽度或高度)太大时:例如width = 5000和height = 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边缘)上它不会崩溃,但在生成后视频不播放视频。

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

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