【问题标题】:TextureView: flicker effect when MediaPlayer setSurfaceTextureView:MediaPlayer setSurface 时的闪烁效果
【发布时间】:2025-11-27 13:55:01
【问题描述】:

我使用TextureViewMediaPlayer 作为ListView 中的一个元素。当用户向下/向上滚动并且视频消失时 从屏幕上我想在某个地方继续播放它,比如说右下角。 我使用相同的TextureView,只需从列表项中提取它并添加到主布局。 MediaPlayer 也一样。 这样TextureView 就会被销毁并重新创建。

问题是 - 当我将表面设置为播放器时,滚动在半秒时冻结。 任何帮助表示赞赏。

我的onSurfaceTextureAvailable

@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width,
   int height) {

    Surface s = new Surface(surface);
    mPlayer.setSurface(s);
}

【问题讨论】:

  • 您是否进行了方法分析跟踪以查看那半秒的去向?
  • MediaPlayer._setVideoSurface() 需要 272.5 毫秒

标签: android android-listview android-mediaplayer textureview


【解决方案1】:

MediaPlayer API 在某些设备上速度很慢,您不应该根据自己的情况使用它。

您应该改用 Ijkplayer (IjkPlayer)。

【讨论】: