我在我的應用程序中實現了SurfaceTexture.OnFrameAvailableListener接口,因此我可以使用視頻幀作爲OpenGL紋理。所有的設置都像它應該和它完美的工作,但onFrameAvailable(SurfaceTexture surfaceTexture)幾秒鐘後停止調用,有效地看起來凍結在OpenGL中的視頻,因爲沒有新的texturedata通過SurfaceTexture.updateTextImage上傳。SurfaceTexture.OnFrameAvailableListener停止被調用
我在onFrameAvailable中設置一個標誌,以便從GL線程執行updateTextImage調用,並且只在需要時才執行。目前,我在每次平局調用中將標誌設置爲true,因此忽略onFrameAvailable檢查,視頻紋理數據每幀都會上傳。像這樣,一切都按照它應該運行,但它似乎效率低下,因爲如果它仍然是相同的(電影幀),沒有新的紋理數據需要上傳。
AFAIK沒有內存泄漏,logcat沒有顯示任何錯誤。此外,媒體播放器已設置爲循環播放,但問題發生在單次播放完成之前。
什麼會導致onFrameAvailable幾秒鐘後不再被調用?
你解決了嗎? –