【问题标题】:Playing a video after a video in Android's TextureView has issues在 Android 的 TextureView 中播放视频后播放视频有问题
【发布时间】:2014-11-04 17:56:08
【问题描述】:

在 TextureView 中使用 MediaPlayer 播放视频,它可以工作。

当一个视频结束并且应该播放另一个视频时,我会调整 TextureView 的大小以适应即将播放的视频的纵横比(例如 - 从 3:4 到 9:16 等等)。

问题,在第一个视频结束后,最后一帧仍然显示, 在调整 TextureView 的大小后,第一个视频的最后一帧会保留一瞬间,但现在纵横比很差,第二个视频正在播放。

显示(大小 X 大小)矩形的视频图像:

图片1: 视频 1,(3:4):

图片2: 视频 1,我们在 2 个视频之间,视频 1 的最后一帧,在调整大小后现在位于 (9:16),但矩形看起来很糟糕。下图显示了一瞬间:

图片3: 视频 2,(9:16),播放良好,但在显示 image2 片刻之后:

所使用的代码没有什么特别之处,以下是其中的一些部分:

// 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,您找到上述问题的解决方案了吗?我已经尝试了一切,但没有成功。
  • 把你的Texture View放在相同的wrapper layout width和height中,然后在setLayoutParams()中。它成功了。我以这种方式解决了同样的问题。我不知道它是如何工作的,但经过大量研究后它对我有用。如果需要更多信息,请告诉我。
  • 嘿,我没明白你的意思,你介意发布代码吗?
  • user1154390,您介意解释一下吗?
  • 应用变换后 textureView.setLayoutParams(new FrameLayout.LayoutParams(viewWidth, viewHeight));

标签: android video android-mediaplayer playback textureview


【解决方案1】:

也许你有几个选择。

理论上,您可以通过断开媒体播放器来清除 Surface,使用 GLES 清除 Surface,然后再次连接媒体播放器。请参阅 Grafika 的 PlayMovieSurfaceActivity 中的 clickPlayStop()clearSurface()。这使用 MediaCodec,而不是 MediaPlayer,所以我不确定它会如何翻译。

另一种选择是使用 TextureView 变换而不是自定义框架布局来设置纵横比。因为您的布局没有改变,所以没有扭曲框架的闪光。有关示例,请参见 PlayMovieActivity 中的 adjustAspectRatio()

【讨论】:

    猜你喜欢
    • 2012-05-30
    • 2014-12-21
    • 2015-10-11
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多