私の Android アプリケーションでは、MediaCodec を使用して一部のメディアを webm (vp8) 形式でエンコードしています。エンコーディングは期待どおりに機能しています。ただし、時々同期フレームを作成する必要があります。これが私がすることです:
encoder.queueInputBuffer(..., MediaCodec.BUFFER_FLAG_SYNC_FRAME);
コードの後半で、同期フレームを確認します。
encoder.dequeueOutputBuffer(bufferInfo, 0);
boolean isSyncFrame = (bufferInfo.flags & MediaCodec.BUFFER_FLAG_SYNC_FRAME);
問題は、isSyncFrame が真の値を取得しないことです。
エンコーディング設定を間違えているのではないかと思っています。同期フレームを時々作成するようにエンコーダーに指示するより良い方法があるかもしれません。
MediaCodec のバグでないことを願っています。よろしくお願いいたします。