Я пытаюсь использовать Nexus для проверки кодировки с помощью API Mediacodec. Я вижу, что входные буферы, обеспечиваемые кодером, составляют 119040 (путем регистрации вводаBuffers.capacity). Но размер кадра, то есть ввода, составляет 460800. Я получил сообщение об ошибке на inputBuffer.put
с buffer overflow
. Поэтому я собирался установить входной буфер на 460800. API, который я мог найти, - BufferInfo.set
. Однако я не могу найти способ привязать этот параметр к кодеру. Может ли кто-нибудь помочь? Благодаря!!!Как установить размер буфера кодировщика, созданный MediaCodec
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);}
Это работает для меня! –