[英]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.