【发布时间】:2021-09-03 05:56:12
【问题描述】:
我有一个http://x.x.x:80/movie/HqZqUt3I7B/QhGtliO2V4/xxxx.mp4?play_token=6nsYOBGUKj 形式的网址,我想从中获取视频并将其显示在 exoplayer 中。通过将该 url 放入 VLC 网络流中,我确认该 url 可以正常工作。但是相同的网址在 exoplayer 中不起作用。这是我的 exoplayer 初始化代码。
private fun initializePlayer() {
if (url.isNotEmpty()){
player = SimpleExoPlayer.Builder(this).build()
binding.videoView.resizeMode = AspectRatioFrameLayout.RESIZE_MODE_FILL
player.videoScalingMode = C.VIDEO_SCALING_MODE_SCALE_TO_FIT
binding.videoView.player = player
val mediaItem: MediaItem = MediaItem.fromUri(url)
Log.d("testurl", url)
player.setMediaItem(mediaItem)
player.playWhenReady = playWhenReady
player.seekTo(currentWindow, playbackPosition)
player.prepare()
player.addListener(this)
} else {
Toast.makeText(this, "Unable to play the video!", Toast.LENGTH_SHORT).show()
}
}
我还实现了OnPlayerError 侦听器来捕获错误。
override fun onPlayerError(error: PlaybackException) {
super.onPlayerError(error)
if (error.message!=null) {
Log.d("testmediaerror", "${error.errorCodeName} ${error.message}")
} else {
Log.d("testmediaerror", error.errorCodeName)
}
}
因此,使用此代码 if 块在 OnPlayerError 被执行,它显示错误为 D/testmediaerror: ERROR_CODE_IO_BAD_HTTP_STATUS Source error。还需要提一下,我的服务器正在返回状态码为302的视频。
【问题讨论】:
标签: android kotlin exoplayer exoplayer2.x