Android MediaCodec无法启动

Android MediaCodec无法启动,android,encoding,android-mediacodec,Android,Encoding,Android Mediacodec,我正在尝试使用MediaCodec从我拥有的一组位图生成mp4文件。 经过大量的编码和测试后,我注意到在互联网上或Android Studio emulator上没有任何示例,但它们在我的真实手机(Android 7和9)上都能工作。。。所以我一直只开发真实手机上的测试 经过大量的编码和测试,我得到了一个有效的编码(对我的两部手机都有效,但对android emulator来说崩溃了),并部署到了生产环境中 我的手机已经上线几个月了,我每天有大约150个用户,但其中大约30%的用户遇到了我在an

我正在尝试使用MediaCodec从我拥有的一组位图生成mp4文件。
经过大量的编码和测试后,我注意到在互联网上或Android Studio emulator上没有任何示例,但它们在我的真实手机(Android 7和9)上都能工作。。。所以我一直只开发真实手机上的测试

经过大量的编码和测试,我得到了一个有效的编码(对我的两部手机都有效,但对android emulator来说崩溃了),并部署到了生产环境中

我的手机已经上线几个月了,我每天有大约150个用户,但其中大约30%的用户遇到了我在android模拟器上注意到的同样的崩溃。所以这不是模拟器的限制

E/ACodec:[OMX.google.h264.encoder]配置编解码器返回错误-38 信号错误(omxError 0x80001001,内部错误-2147483648) E/MediaCodec:处于状态3时,编解码器报告错误0x80001001,操作代码0 E/MediaCodec:配置失败,错误为0x80001001,正在重置

private static MediaCodecInfo selectCodec(String mimeType) {
        int numCodecs = MediaCodecList.getCodecCount();
        for (int i = 0; i < numCodecs; i++) {
            MediaCodecInfo codecInfo = MediaCodecList.getCodecInfoAt(i);
            if (!codecInfo.isEncoder()) {
                continue;
            }
            String[] types = codecInfo.getSupportedTypes();
            for (String type : types) {
                if (type.equalsIgnoreCase(mimeType)) {
                    return codecInfo;
                }
            }
        }
        return null;
    }


MediaCodecInfo codecInfo = EncoderUtils.selectCodec("video/avc");
MediaCodec.createByCodecName(codecInfo.getName()).encoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
然后我得到以下异常:

Non-fatal Exception: android.media.MediaCodec$CodecException: Error 0x80001001
       at android.media.MediaCodec.native_configure(MediaCodec.java)
       at android.media.MediaCodec.configure(MediaCodec.java:1960)
       at android.media.MediaCodec.configure(MediaCodec.java:1889)
       at com.tomatedigital.lottogram.util.EncoderUtils.start(EncoderUtils.java:98)
       at com.tomatedigital.lottogram.service.LottogramService$3.run(LottogramService.java:329)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
       at java.lang.Thread.run(Thread.java:764)
当logcat打印时:

I/OMXClient: IOmx service obtained
E/ACodec: [OMX.google.h264.encoder] configureCodec returning error -38
    signalError(omxError 0x80001001, internalError -2147483648)
E/MediaCodec: Codec reported err 0x80001001, actionCode 0, while in state 3
E/MediaCodec: configure failed with err 0x80001001, resetting...
I/OMXClient: IOmx service obtained
W/AMessage: failed to deliver message as target handler 7 is gone.
E/ACodec: [OMX.google.h264.encoder] configureCodec returning error -38
    signalError(omxError 0x80001001, internalError -2147483648)
E/MediaCodec: Codec reported err 0x80001001, actionCode 0, while in state 3
E/MediaCodec: configure failed with err 0x80001001, resetting...
I/OMXClient: IOmx service obtained

我在任何地方都找不到0x80001001错误的引用。这是什么意思?如何解决?有人有任何线索吗?

这些维度看起来很可疑。。。不同的原始设备制造商提供不同的编解码器,如果其中一些不支持这些DIM,我也不会感到惊讶。这些尺寸看起来很可疑。。。不同的原始设备制造商提供不同的编解码器,如果其中一些不支持这些DIM,我也不会感到惊讶。
I/OMXClient: IOmx service obtained
E/ACodec: [OMX.google.h264.encoder] configureCodec returning error -38
    signalError(omxError 0x80001001, internalError -2147483648)
E/MediaCodec: Codec reported err 0x80001001, actionCode 0, while in state 3
E/MediaCodec: configure failed with err 0x80001001, resetting...
I/OMXClient: IOmx service obtained
W/AMessage: failed to deliver message as target handler 7 is gone.
E/ACodec: [OMX.google.h264.encoder] configureCodec returning error -38
    signalError(omxError 0x80001001, internalError -2147483648)
E/MediaCodec: Codec reported err 0x80001001, actionCode 0, while in state 3
E/MediaCodec: configure failed with err 0x80001001, resetting...
I/OMXClient: IOmx service obtained