thisのリンクを参照してください。出力バッファが利用可能なときに単純な遅延を追加するだけです: ByteBuffer buffer = outputBuffers [outIndex]; Log.v( "DecodeActivity"、 "このバッファは使用できませんが、APIの制限によりレンダリングします" +バッファ);アンドロイド - MediaCodecビデオ専用デコーダのフレームレートコントロール
// We use a very simple clock to keep the video FPS, or the video
// playback will be too fast
while (info.presentationTimeUs/1000 > System.currentTimeMillis() - startMs) {
try {
sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
break;
}
}
decoder.releaseOutputBuffer(outIndex, true);
しかし、私は、ビデオフレームのみ25fpsのを供給する場合、デコードされたビデオは、唯一の10FPS(多くのフレームがドロップされたように見える)のように見えます。
fpsを確認するためにframeconutを追加すると、実際には25fpsになります。入力バッファにMediaMuxerを追加すると、フレームは実際には再生されません。
なぜかfamesが表示されますが、画面に表示されませんが、遅延を取り除くと再生が非常に早くなります(ほぼ50fps)。