我有一个形式http://x.x.x:80/movie/HqZqUt3I7B/QhGtliO2V4/xxxx.mp4?play_token=6nsYOBGUKj
的网址,我想从那里获取视频并将其显示在exoplayer中。我通过将url放在VLC Network Stream中来确认url是完美工作的。但是相同的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
listener来捕获错误。
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)
}
}
因此,使用此代码执行OnPlayerError
中的if
块,并将错误显示为D/testmediaerror: ERROR_CODE_IO_BAD_HTTP_STATUS Source error
。还有必要指出的是,我的服务器正在返回状态代码为302
的视频。
发布于 2021-09-03 06:00:38
向服务器请求文件,然后执行HTTP 302
重定向-这将在获取文件时生成实际的URL和HTTP 200
。在Exoplayer中,也有一个配置allowCrossProtocolRedirects
(它通常不允许从例如。HTTPS到HTTPS ...but,它应该支持公共重定向)。
https://stackoverflow.com/questions/69040127
复制相似问题