簡體   English   中英

android-MediaCodec僅視頻解碼器幀率控制

[英]android - MediaCodec video only decoder framerate control

參考鏈接,我只是在輸出緩沖區可用時添加一個簡單的延遲:ByteBuffer buffer = outputBuffers [outIndex]; Log.v(“ DecodeActivity”,“由於API限制,我們不能使用此緩沖區,但只能渲染它,” +緩沖區);

                // 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(很多幀看起來像丟了幀)。

但是,如果我添加一個frameconut來檢查fps,它實際上是25fps,並且如果添加MediaMuxer來復用輸入緩沖區中的幀,它可以很好地播放,這意味着幀實際上並未被丟棄。

因此,這就說明了為什么那里有成名但沒有在屏幕上顯示的原因,但是如果我刪除延遲,則播放速度將非常快(接近50fps)。

剛剛發現了由TextureView引起的問題,將TextureView更改為SurfaceView之后,現在可以正常工作了。

但是仍然不清楚為什么TextureView性能這么差。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM