You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MediaCodec.stop()偶发抛出CodecException: Error 0x80000000问题求助

MediaCodec.stop()偶发抛出Error 0x80000000的原因分析

在运行该应用的99%以上Android设备中从未出现此问题,仅在少数设备上偶发。

相关代码

MediaCodec mediaCodecVideo = MediaCodec.createByCodecName("OMX.google.hevc.decoder");
mediaCodecVideo.configure(mediaForma, surface, null, 0);
...
mediaCodecVideo.start();
...
mediaCodecVideo.stop();

注:代码中原Codec名称重复写了两次OMX.google.hevc.decoder,推测是笔误,已修正为合理形式。

偶发抛出的异常

android.media.MediaCodec$CodecException: Error 0x80000000
        at android.media.MediaCodec.native_stop(MediaCodec.java)
        at android.media.MediaCodec.stop(MediaCodec.java:2435)

该错误不影响MediaCodec.release(),捕获异常后无其他问题,以下是可能的原因:

可能的原因

  • Codec内部状态异常过渡:少数设备上,调用stop()时Codec可能处于未完全收尾的状态(比如最后一帧解码缓冲区还在处理、内部异步操作未完成),native层无法正常执行stop逻辑,返回通用未知错误码0x80000000。
  • 设备Codec实现差异:不同设备的MediaCodec(尤其是指定的OMX.google.hevc.decoder软件解码器)底层实现存在适配差异,部分设备的stop流程资源回收逻辑存在小瑕疵,但不影响后续release的完整清理。
  • 线程调用时机问题:如果stop()在非Codec操作的线程触发,少数设备的线程同步机制不完善,导致调用时机与Codec内部状态冲突,触发异常。
  • 系统资源紧张:当设备内存不足、多媒体资源被其他进程占用时,Codec的stop操作可能因资源回收失败触发异常,但release操作能绕过部分状态直接清理资源,因此不受影响。

内容的提问来源于stack exchange,提问作者Hong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 14:15:02