首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用error MediaCodec$CodecException呼叫mediaCodec.configure时电话崩溃: Error 0x80001001

使用error MediaCodec$CodecException呼叫mediaCodec.configure时电话崩溃: Error 0x80001001
EN

Stack Overflow用户
提问于 2022-11-09 10:51:12
回答 1查看 23关注 0票数 0

我正在开发的应用程序通过Surface从摄像头获取视频,并将其编码为视频/avc (H264),我正在成功地做到这一点,它在像galaxy Note 10+这样的手机上运行得很好,但在像小米note 10这样的手机上工作得很好,这是我正在发布的一款新手机。以下是我正在做的事情:

  1. 创建格式:

代码语言:javascript
运行
复制
    format = MediaFormat.createVideoFormat(
        H264, videoWidth, videoHeight
        ).apply {

        setInteger(MediaFormat.KEY_MAX_INPUT_SIZE, 0)
        setInteger(MediaFormat.KEY_BIT_RATE, bitrate)
        setInteger(MediaFormat.KEY_FRAME_RATE, videoFrameRate)
        setInteger(
            MediaFormat.KEY_COLOR_FORMAT,
            CodecCapabilities.COLOR_FormatSurface
        )
        setFloat(MediaFormat.KEY_I_FRAME_INTERVAL, 1f)
    }```

然后

  1. 创建encoderName:

代码语言:javascript
运行
复制
    val encoderName = MediaCodecList(
        MediaCodecList.ALL_CODECS
    ).findEncoderForFormat(format) //using the format I shared in the first step

然后创建

codec = MediaCodec.createByCodecName(encoderName)

然后.setCallback(回调)//不重要,因为我们要到现在才能完成,它会在此之前崩溃。

4.这是它崩溃的地方。 codec.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE) //CRASH => MediaCodec$CodecException: Error 0x80001001

  1. The rest

代码语言:javascript
运行
复制
codec.setInputSurface(surface)
codec.start()

我怀疑

代码语言:javascript
运行
复制
    setInteger(
        MediaFormat.KEY_COLOR_FORMAT,
        CodecCapabilities.COLOR_FormatSurface
    ) //I tried changing the value and completely removing this setInteger, no luck :/
EN

回答 1

Stack Overflow用户

发布于 2022-12-01 11:10:10

error 0x80001001 (也称为OMX_ErrorUndefined )说:“有一个错误,但是不能确定错误的原因。”

造成此错误的最可能原因是资源不足。例如,如果您试图配置硬件编解码器,但目前没有足够的图形内存,就可能发生这种情况。

建议1:当你使用完编解码器时,一定要释放它们。您需要检查所有代码路径。

建议2:知道这是可能发生的,您可以过滤MediaCodecList,保留所有支持给定格式的编码器。然后将configure()调用包装在try/catch块中。如果调用失败,请尝试从编解码器列表中选择下一个选项。

注意,在大多数设备上,H264至少有两个编解码器:硬件编解码器和软件编解码器。前者具有较好的性能,后者具有更强的弹性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74373662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档