MediaCodec:调整 ByteBuffer 值以匹配 BufferInfo(不需要?)
MediaCodec: adjust the ByteBuffer values to match BufferInfo (not needed?)
我正在使用 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: Bad position (limit 367): 8545 at
java.nio.Buffer.positionImpl(Buffer.java:351)
PS: 这些错误发生在音频编码器上。
我意识到另一个线程正在更改 bufferInfo 值,它导致了这些问题。
在调用 writeSampleData 方法复制 bufferInfo 之前确保 bufferInfo 的值不会改变 variable/values。
我正在使用 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: Bad position (limit 367): 8545 at
java.nio.Buffer.positionImpl(Buffer.java:351)
PS: 这些错误发生在音频编码器上。
我意识到另一个线程正在更改 bufferInfo 值,它导致了这些问题。
在调用 writeSampleData 方法复制 bufferInfo 之前确保 bufferInfo 的值不会改变 variable/values。