记录一个很奇怪的错误
java.nio.BufferOverflowException at java.nio.ByteBuffer.put(ByteBuffer.java:787)
错误原因也很简单,比如下面这段代码就可以
ByteBuffer buffer2 = ByteBuffer.allocate(2);
ByteBuffer buffer3 = ByteBuffer.allocate(3);
buffer2.put(buffer3); // 分配了2个字节,;却put了3个字节的数据导致 Java.nio.BufferOverflowException
问题原因知道了下面就是解决问题,但是我的应用场景处出的问题,并没有让我如此简单的解决
我的应用场景:
MediaCodec 编码,比如录制音频,大致的流程:
- 拿到录音的数据,比如使用 AudioRecord
- 使用MediaCodec 编码
- 输入源数据 伪代码
ByteBuffer[] inputBuffers = mAudioCodec.getInputBuffers();
ByteBuffer in