在TextureView中使用MediaPlayer播放視頻時,它可以工作。在Android的TextureView中的視頻播放視頻時出現問題
當視頻結束並且應該播放另一個視頻時,我調整TextureView的大小以適應即將到來的視頻的縱橫比(例如 - 從3:4到9:16等等)。
的問題,第一視頻結束後,它的最後一幀保持所示, 比起TextureView被調整大小,第一視頻的最後一幀保留的一瞬間,但現在用壞縱橫比,所述第二部影片播放得很好。
IMAGE1: 視頻1,(3:4):
圖像2:
的視頻顯示(尺寸X大小)的矩形圖像 視頻1,我們在這裏在兩個視頻之間,視頻1的最後一幀,現在在(9:16)調整大小後,但矩形看起來很糟糕。下面的圖片示出了用於一秒鐘:
的Image3: 視頻2,(9:16),以及播放但示出一秒鐘後圖像2:
代碼沒有什麼特別之處,下面是它的一些部分:
// To init the TextureView and MediaPlayer:
public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, int height) {
m_MediaPlayer = new MediaPlayer();
m_Surface = new Surface(surfaceTexture);
m_MediaPlayer.setSurface(m_Surface);
}
m_TextureView.setSurfaceTextureListener(this);
// To Resize:
LayoutParams layoutParams = new FrameLayout.LayoutParams(newTVWidth, newTVHeight);
layoutParams.gravity = Gravity.CENTER;
m_TextureView.setLayoutParams(layoutParams);
// To play:
m_MediaPlayer.reset();
m_MediaPlayer.setDataSource(videoFilePath);
m_MediaPlayer.prepare();
// <--- Here comes a call to "To Resize" which is shown right above this code
m_MediaPlayer.start();
嗨Miko Diko,你找到了上述問題的解決方案。我嘗試了一切,但沒有成功。 – user1154390 2015-03-04 12:36:36
將您的紋理視圖放在相同的包裝佈局的寬度和高度,然後在setLayoutParams()中。它有訣竅。我用這種方法解決了同樣的問題。我不知道它是如何工作的,但經過大量研究後,它對我很有用。如果需要更多信息,請告訴我。 – user1154390 2015-03-04 16:12:13
嘿,我不明白你的意思,你介意發佈代碼顯示如何? – 2015-04-03 22:44:19