gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:55:32 35 4
gpt4 key购买 nike

我正在尝试使用 Nexus 测试 Mediacodec API 的编码。我可以看到编码器提供的 inputBuffers 是 119040(通过记录 inputBuffers.capacity)。但是帧的大小,即输入,是 460800。我在 inputBuffer.put 收到错误消息,其中包含 buffer overflow。所以我准备将输入缓冲区设置为 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.

关于android - 如何设置由 MediaCodec 创建的编码器缓冲区大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15202315/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com