gpt4 book ai didi

android - 媒体编解码器 dequeueOutputBuffer IllegalStateException

转载 作者:搜寻专家 更新时间:2023-11-01 09:47:21 27 4
gpt4 key购买 nike

我尝试使用 Android Media Codec 解码 mp3 音频数据流。使用 44100 的采样率解码工作正常,但延迟太大。所以我将采样率设置为 16000,但现在解码器不再工作了。我在 dequeueOutputBuffer 处收到非法状态异常。

这是可能出现问题的代码部分:

                        bufferInfo = new MediaCodec.BufferInfo();
outputBufferIndex = decoder.dequeueOutputBuffer(bufferInfo, -1);


while (outputBufferIndex >= 0) {



outputBuffer = decoder.getOutputBuffer(outputBufferIndex);

outputBuffer.position(bufferInfo.offset);
outputBuffer.limit(bufferInfo.offset + bufferInfo.size);

outData = new byte[bufferInfo.size];
outputBuffer.get(outData);

track.write(outData, 0, outData.length);

decoder.releaseOutputBuffer(outputBufferIndex, false);
outputBufferIndex = decoder.dequeueOutputBuffer(bufferInfo, -1);


}

我还尝试将 dequeueOutputBuffer 的超时设置为 0,但这并没有改变任何东西。

这是我收到的错误:

E/SoftMP3: mp3 decoder returned error 1
E/ACodec: [OMX.google.mp3.decoder] ERROR(0x80001001)
E/ACodec: signalError(omxError 0x80001001, internalError -2147483648)
E/MediaCodec: Codec reported err 0x80001001, actionCode 0, while in state 6
E/AndroidRuntime: FATAL EXCEPTION: Thread-79054
Process: com.example.jonas.audio_client, PID: 26394
java.lang.IllegalStateException
at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:1107)

如果我打印提取器获得的音频格式,我会看到采样率设置为 16000。

D/Format:: {bitrate=32000, mime=audio/mpeg, durationUs=6509000, channel-count=1, sample-rate=16000, bit-rate=32000}

感谢您的帮助!

最佳答案

如果您在模拟器上运行它,请确保您在模拟器设置中选择了图形作为硬件:GLES 2.0。软件版本似乎有问题。

关于android - 媒体编解码器 dequeueOutputBuffer IllegalStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37415954/

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