2017-12-02 7 views
0

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)。

答えて

0

TextureViewをSurfaceViewに変更した後、TextureViewが原因で問題が見つかりました。現在は正常に動作しています。

しかし、なぜTextureViewのパフォーマンスがそれほど悪いのかは明らかではありません。

関連する問題