Nexus を使用して、Mediacodec API でエンコードをテストしようとしています。エンコーダーによって提供される inputBuffers が 119040 であることを確認できます (inputBuffers.capacity のログによる)。しかし、フレームのサイズ、つまり入力は 460800 です。 inputBuffer.put
with でエラー メッセージが表示されました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);}