jjzjj

dequeueInputBuffer

全部标签

Android MediaCodec dequeueInputBuffer 总是返回 -1

我正在尝试从AudioRecord对象中获取原始数据,并使用MediaMuxer和MediaCodec将其保存在一个文件中。我启动编解码器,启动多路复用器,将数据加载到输入缓冲区,但没有这样的运气。通过调试调查,我发现问题出在对dequeueInputBuffer()的调用中。看起来前几block数据成功了,但最终dequeueInputBuffer()只是不断地返回-1。有什么明显的我遗漏的东西吗?这似乎是我正在填满输入缓冲区,但编解码器永远不会释放它们。相关代码fragment:intnumChunks=input.length/CHUNKSIZE;mAudioEncoder.st

android - 如何防止由 MediaCodec.dequeueInputBuffer 生成的 java.lang.IllegalStateException

以下代码偶尔会产生java.lang.IllegalStateException:intiInputBufIndex=_mcDecoder.dequeueInputBuffer(TIMEOUT_USEC);其中_mcDecoder是MediaCodec的一个实例。解码后的流是H.264视频。该代码在大多数情况下都运行良好。有没有办法主动检查MediaCodec的状态来避免这个异常?堆栈跟踪:java.lang.IllegalStateExceptionatandroid.media.MediaCodec.dequeueInputBuffer(NativeMethod)atnet.myd