gpt4 book ai didi

android - MediaCodec createInputSurface() 抛出非法状态异常

转载 作者:行者123 更新时间:2023-11-29 01:20:14 35 4
gpt4 key购买 nike

在我的 Android 应用程序中,我需要在 gpu 中对实时摄像头视频进行编码。这是一些相关代码:

    MediaFormat format = MediaFormat.createVideoFormat(MIME_TYPE, WIDTH, HEIGHT);
format.setInteger(MediaFormat.KEY_COLOR_FORMAT,
MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface);
format.setInteger(MediaFormat.KEY_BIT_RATE, BITRATE);
format.setInteger(MediaFormat.KEY_FRAME_RATE, FRAME_RATE);
format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, IFRAME_INTERVAL);

this._encoder = MediaCodec.createEncoderByType(MIME_TYPE);
this._encoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
Surface s = this._encoder.createInputSurface();

MIME_TYPEMediaFormat.MIMETYPE_VIDEO_AVC, 时,此代码按预期工作。但是,当 mime 类型为 MediaFormat.MIMETYPE_VIDEO_VP8 时,对 createInputSurface() 的调用会引发非法状态异常。以下是来自 logcat 的更多信息:

I/ACodec: setupVideoEncoder succeeded
E/OMXNodeInstance: OMX_GetExtensionIndex OMX.google.android.index.storeMetaDataInBuffers failed
E/ACodec: [OMX.google.vpx.encoder] onCreateInputSurface returning error -2147483648
W/MediaCodec: createInputSurface failed, err=-2147483648

我认为 vp8 编码器存在于设备上。否则,MediaCodec.configure() 会失败。感谢您对为什么 createInputSurface() 失败的见解?问候。

最佳答案

我的测试是在运行 OS 4.3 的设备上进行的。根据此讨论,此问题似乎已在 4.4 及更高版本中得到修复:https://code.google.com/p/android/issues/detail?id=58834

关于android - MediaCodec createInputSurface() 抛出非法状态异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37263922/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com