首页 > 解决方案 > ExoPlayer 调整大小仅在第一次调用时有效

问题描述

如上所述,我在更改 ExoPlayer 上的调整大小模式时遇到问题。我正在播放一个在滚动时更改的视频列表,并且取决于屏幕方向,如果视频靠近屏幕 AspectRatio,我试图放大视频,处理它的代码块是:

  override fun onVideoSizeChanged(width: Int, height: Int, unappliedRotationDegrees: Int, pixelWidthHeightRatio: Float) {
    super.onVideoSizeChanged(width, height, unappliedRotationDegrees, pixelWidthHeightRatio)
    val displayMetrics = DisplayMetrics()
    (context as Activity).windowManager.defaultDisplay.getMetrics(displayMetrics)

    val displayAspectRatio = displayMetrics.widthPixels.toFloat() / displayMetrics.heightPixels
    val videoAspectRatio = width.toFloat() / height

    if (abs(videoAspectRatio - displayAspectRatio) < 0.2) {
      exoPlayerView.resizeMode = AspectRatioFrameLayout.RESIZE_MODE_ZOOM
      selectedPlayer?.videoScalingMode = C.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING
    } else {
      exoPlayerView.resizeMode = AspectRatioFrameLayout.RESIZE_MODE_FIT
      selectedPlayer?.videoScalingMode = C.VIDEO_SCALING_MODE_SCALE_TO_FIT
    }

  }

但是exoPlayerView.resizeMode只有在第一次调用时才可见。还有其他方法可以做到这一点吗?或者也许强制视图重新渲染?

提前致谢!

标签: androidkotlinexoplayer2.x

解决方案


您可以使用 :exoplayer.videoFormat.width和访问视频的大小exoplayer.videoFormat.height,这样每当您的视频开始播放时,您就可以启动函数来计算比率并执行您的操作


推荐阅读