ExoPlayer 调整大小仅在第一次调用时有效
ExoPlayer resize works only first time its called
如上所述,我在更改 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
仅在第一次调用时可见。
还有其他方法吗?或者强制视图重新渲染?
提前致谢!
您可以通过 exoplayer.videoFormat.width
和 exoplayer.videoFormat.height
访问您的视频的大小,这样每当您的视频开始播放时,您就可以启动您的功能来计算比率并执行您的操作
如上所述,我在更改 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
仅在第一次调用时可见。
还有其他方法吗?或者强制视图重新渲染?
提前致谢!
您可以通过 exoplayer.videoFormat.width
和 exoplayer.videoFormat.height
访问您的视频的大小,这样每当您的视频开始播放时,您就可以启动您的功能来计算比率并执行您的操作