硬编码失败问题Codec reported err 0x80000000, actionCode 0, while in state 5
•
移动开发
在某台小米11手机上创建MediaCodec编码器出现如下问题,看日志好像是状态不对
2023-02-08 10:53:32.174 20710-21231/com.demoD/CCodec: ISConfig timeOffset 0us (=> INVALID_OPERATION) start at 0us
2023-02-08 10:53:32.176 20710-21230/com.demo E/MediaCodec: Codec reported err 0x80000000, actionCode 0, while in state 5
2023-02-08 10:53:32.178 20710-21229/com.demo E/demo: android.media.MediaCodec$CodecException: start failed
at android.media.MediaCodec.native_start(Native Method)
at android.media.MediaCodec.start(MediaCodec.java:2235)
查看MediaCodec状态有如下几种
enum State {
UNINITIALIZED,
INITIALIZING,
INITIALIZED,
CONFIGURING,
CONFIGURED,
STARTING,
STARTED,
FLUSHING,
FLUSHED,
STOPPING,
RELEASING,
};
state 5是STARTING状态,查看代码确定只启动了一次。
查看手机支持的编码器信息
//获取手机硬编码器信息
MediaCodecList list = new MediaCodecList(MediaCodecList.REGULAR_CODECS);
MediaCodecInfo[] supportCodes = list.getCodecInfos();
for (MediaCodecInfo codec : supportCodes) {
if (codec.isEncoder()) {
String name = codec.getName();
if (!name.startsWith("OMX.google")) {
Log.i(TAG, "硬编->" + name);
}
}
}
结果如下
c2.android.aac.encoder c2.android.amrnb.encoder c2.android.amrwb.encoder c2.android.flac.encoder c2.android.opus.encoder c2.qti.avc.encoder OMX.qcom.video.encoder.avc c2.qti.hevc.encoder OMX.qcom.video.encoder.hevc c2.qti.hevc.encoder.cq OMX.qcom.video.encoder.hevc.cq c2.qti.heic.encoder OMX.qcom.video.encoder.heic c2.android.avc.encoder c2.android.h263.encoder c2.android.hevc.encoder c2.android.mpeg4.encoder c2.android.vp8.encoder c2.android.vp9.encoder
默认使用的c2.qti.avc.encoder 编码器切换成OMX.qcom.video.encoder.avc还是用的c2.qti.avc.encoder
切换成c2.android.avc.encoder则是正常的,具体原因暂时不详
本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/dc19c12c33.html
