Folk,如何在屏幕方向保持解碼狀態?
我正在使用MediaCodec來解碼網絡流。 MediaCodec上的方法configure()將SurfaceView對象作爲參數,可以很容易地將輸出解碼到表面視圖中。
設備方向改變時出現問題。舊的表面被破壞並創建一個新的表面。 mediacodec仍然持有的表面變得無效。
我無法銷燬MediaCodec對象並重新創建一個新對象。這將導致等待幾秒鐘,直到新的關鍵視頻幀到達。看看MediaCodec上所有可用的方法,看起來改變表面的唯一方法是調用configure()。可以在MediaCodec對象上多次調用configure()嗎?
或者,也許有一種方法可以存儲MediaCodec對象的內部狀態並將其傳輸到新的MediaCodec對象。
如果你能指導我正確的方向,我將不勝感激。預先感謝您的幫助。
'MediaCodec'對象上允許的操作集有點模糊。另一種方法是配置不與顯示器連接的「表面」,例如,一個'SurfaceTexture',然後用OpenGL ES渲染成'GLSurfaceView'。 – fadden
謝謝你的幫助。我會嘗試SurfaceTexture。 – Peter
您可以嘗試TextureView,「與SurfaceView不同,TextureView不會創建一個單獨的窗口,而是表現爲一個普通的View。這個關鍵區別允許TextureView被移動,轉換,動畫等。例如,您可以製作一個TextureView semi-通過調用myView.setAlpha(0.5f)來顯示半透明。「我的問題是我無法通過使用Mediacodec成功解碼h264幀,也許你可以給我一些幫助,我的電子郵件是[email protected],謝謝! –