MediaCodec:调整ByteBuffer值以匹配BufferInfo(不需要?)

时间:2018-03-09 12:09:11

标签: android mediacodec bytebuffer android-mediacodec

我使用MediaCodec录制.MP4视频(图像和音频)。

我之前看到很多带有评论的源代码来设置ByteBuffer的位置和限制。

// adjust the ByteBuffer values to match BufferInfo (not needed?)
encodedData.position(bufferInfo.offset);
encodedData.limit(bufferInfo.offset + bufferInfo.size);

示例:https://bigflake.com/mediacodec/CameraToMpegTest.java.txt

毕竟,这些线条真的有必要吗?

我一直在问自己,因为我遇到了一些问题,例如下面的例外情况:

  

IllegalArgumentException:Bad limit(capacity 8192):9303 at   java.nio.Buffer.limit(Buffer.java:298)

  

IllegalArgumentException:错误的位置(限制367):8545在
  java.nio.Buffer.positionImpl(Buffer.java:351)

PS:这些错误发生在音频编码器上。

1 个答案:

答案 0 :(得分:0)

我意识到另一个线程正在改变bufferInfo值,这导致了这些问题。

确保在调用writeSampleData方法生成bufferInfo变量/值的副本之前,bufferInfo的值不会更改。