Sto cercando di utilizzare Nexus per testare la codifica con le API Mediacodec. Riesco a vedere l'inputBuffer fornito dal codificatore è 119040 (registrando inputBuffers.capacity). Ma la dimensione del frame, cioè l'input, è 460800. Ho ricevuto un messaggio di errore a inputBuffer.put
con buffer overflow
. Quindi stavo per impostare il buffer di input su 460800. L'API che ho trovato è BufferInfo.set
. Tuttavia, non riesco a trovare un modo per collegare questa impostazione all'encoder. Qualcuno potrebbe aiutare? Grazie!!!Come impostare la dimensione del buffer dell'encoder creata da 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);}
Funziona per me! –