在某台小米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 文章来源:https://www.toymoban.com/news/detail-602694.html
切换成c2.android.avc.encoder则是正常的,具体原因暂时不详文章来源地址https://www.toymoban.com/news/detail-602694.html
到了这里,关于硬编码失败问题Codec reported err 0x80000000, actionCode 0, while in state 5的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!