android – 如何设置MediaCodec创建的编码器缓冲区大小

我正在尝试使用Nexus来测试Mediacodec API的编码.我可以看到编码器提供的inputBuffers是119040(通过记录inputBuffers.capacity).但框架的大小,即输入,是460800.我在inputBuffer.put上收到错误消息,缓冲区溢出.所以我打算将输入缓冲区设置为460800.我能找到的API是BufferInfo.set.但是,我找不到将此设置附加到编码器的方法.有人可以帮忙吗?谢谢!!!

encoder = MediaCodec.createByCodecName(codecInfo.getName());
ByteBuffer[] inputBuffers = encoder.getInputBuffers();
if (inputBufferIndex >= 0) {
    ByteBuffer inputBuffer = inputBuffers[inputBufferIndex];
    inputBuffer.clear();
    inputBuffer.put(input);
encoder.queueInputBuffer(inputBufferIndex, 0, input.length, 0, 0);}

解决方法:

我迟到了,但基于:Android MediaCodec Documentation我认为更改缓冲区的正确方法是调整MAX_INPUT_SIZE,如:

int width=800;
int height=480;
encoder = MediaCodec.createByCodecName(codecInfo.getName());
format = MediaFormat.createVideoFormat ("video/avc", width, height);
format.setInteger(MediaFormat.KEY_MAX_INPUT_SIZE,655360); // 0.5MB but adjust it as you need.
上一篇:从Encoder-Decoder(Seq2Seq)理解Attention的本质


下一篇:使用深度学习打造智能聊天机器人