Android MediaCodec 配置错误,崩溃
Android MediaCodec configure error, crash
我正在尝试使用 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 不会播放视频。
对于小尺寸(例如屏幕尺寸),它在所有设备上都能正常工作
您的纹理宽度太大。
AFAIK,最大纹理尺寸为 4096x4096。根据设备的不同,它可能会低于该值。
检查这个答案:
似乎不支持奇数宽度或高度。为了避免 Error 0xfffffc0e
在小米 Redme 7 设备上,我被迫这样做:
DisplayMetrics metrics = getResources().getDisplayMetrics();
int width = (metrics.widthPixels / 2) * 2;
int height = (metrics.heightPixels / 2) * 2;
我正在尝试使用 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 不会播放视频。
对于小尺寸(例如屏幕尺寸),它在所有设备上都能正常工作
您的纹理宽度太大。 AFAIK,最大纹理尺寸为 4096x4096。根据设备的不同,它可能会低于该值。
检查这个答案:
似乎不支持奇数宽度或高度。为了避免 Error 0xfffffc0e
在小米 Redme 7 设备上,我被迫这样做:
DisplayMetrics metrics = getResources().getDisplayMetrics();
int width = (metrics.widthPixels / 2) * 2;
int height = (metrics.heightPixels / 2) * 2;