Android使用mediacodec编码aac音频时出现BufferOverflowException异常
创始人
2024-10-10 14:00:54
0

出现该异常的主要原因是设置的编码器缓冲区不足,可以通过修改缓冲区大小来解决。

以下是一个可能的解决方法,需要根据实际情况进行调整:

int BUFFER_SIZE = 1024 * 10; // 缓冲区大小,根据实际情况进行调整
ByteBuffer[] inputBuffers = mediaCodec.getInputBuffers();
ByteBuffer[] outputBuffers = mediaCodec.getOutputBuffers();

// 获取编码器输入流和输出流
MediaCodec.BufferInfo bufferInfo = new MediaCodec.BufferInfo();
int inputBufferIndex = mediaCodec.dequeueInputBuffer(-1);
if (inputBufferIndex >= 0) {
    ByteBuffer inputBuffer = inputBuffers[inputBufferIndex];
    inputBuffer.clear();

    // 将需要编码的数据写入输入流
    int sampleSize = mediaExtractor.readSampleData(inputBuffer, 0);
    long presentationTimeUs = mediaExtractor.getSampleTime();
    if (sampleSize < 0) {
        // 结束编码
        mediaCodec.queueInputBuffer(inputBufferIndex, 0, 0, presentationTimeUs, MediaCodec.BUFFER_FLAG_END_OF_STREAM);
    } else {
        mediaCodec.queueInputBuffer(inputBufferIndex, 0, sampleSize, presentationTimeUs, 0);
        mediaExtractor.advance();
    }
}

int outputBufferIndex = mediaCodec.dequeueOutputBuffer(bufferInfo, TIMEOUT_US);
while (outputBufferIndex >= 0) {
    ByteBuffer outputBuffer = outputBuffers[outputBufferIndex];
    // 处理输出流数据
    // ...

    mediaCodec.releaseOutputBuffer(outputBufferIndex, false);
    outputBufferIndex = mediaCodec.dequeueOutputBuffer(bufferInfo, TIMEOUT_US);
}

需要注意的是,在修改了缓冲区大小后,还需要根据具体情况进行调整读取数据的大小,以保证不会出现其他类型的异常。

相关内容

热门资讯

科技揭秘!hhpoker德州有... 科技揭秘!hhpoker德州有挂吗,wepoker辅助透视,真是真的有挂(确实有挂)wepoker辅...
9分钟了解!pokemmo脚本... 9分钟了解!pokemmo脚本辅助器,hh poker辅助器先试用,一直真的有挂(有挂助手)1、首先...
科技分享!uupoker有透视... 科技分享!uupoker有透视吗,aapoker透视脚本入口,好像存在有挂(有挂存在)科技分享!uu...
一分钟揭秘!微扑克游戏辅助器,... 一分钟揭秘!微扑克游戏辅助器,德普之星辅助器app,切实真的有挂(有挂总结)1、用户打开应用后不用登...
三分钟了解!wepoker有透... 三分钟了解!wepoker有透视功能吗,aapoker怎么控制牌,原来是有挂(真实有挂)1、辅助器安...
总算了解!pokemmo手机版... 总算了解!pokemmo手机版修改器,wepoker怎么挂飞机,其实真的是有挂(有挂秘诀)1、模拟器...
科普攻略!菠萝德州透视脚本,w... 科普攻略!菠萝德州透视脚本,wepoker破解游戏盒子,一贯有挂(有挂透明挂)1、首先打开辅助器下载...
分辨真假!xpoker辅助器,... 分辨真假!xpoker辅助器,aapoker透视插件,切实真的有挂(有挂规律)在进入软件靠谱后,参与...
终于清楚!约局吧德州真的存在透... 终于清楚!约局吧德州真的存在透视吗,aapoker真的假的,真是是真的有挂(有挂方针)该软件可以轻松...
一分钟揭秘!wepoker私人... 一分钟揭秘!wepoker私人局透视插件,德普之星透视软件免费入口官网,竟然真的有挂(有挂秘籍)1、...