我正在尝试使用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边缘)上它不会崩溃,但在生成后视频不播放视频。
对于小尺寸(例如屏幕尺寸),它在所有设备上都能正常工作
答案 0 :(得分:3)
纹理的宽度太大。 AFAIK,最大纹理尺寸为4096x4096。它可能会低于设备。
答案 1 :(得分:0)
似乎不支持奇数宽度或高度。为了避免在小米Redme 7设备上使用Error 0xfffffc0e
,我不得不这样做:
DisplayMetrics metrics = getResources().getDisplayMetrics();
int width = (metrics.widthPixels / 2) * 2;
int height = (metrics.heightPixels / 2) * 2;