我正在使用带有循环功能的exoplayer,如下所示:
private fun prepareExoPlayerFromFileUri(uri: Uri, mediaView: SurfaceView) {
val exoPlayer = ExoPlayerFactory.newSimpleInstance(DefaultRenderersFactory(this), DefaultTrackSelector(null as BandwidthMeter?), DefaultLoadControl())
exoPlayer.setVideoSurfaceView(mediaView)
val dataSpec = DataSpec(uri)
val fileDataSource = FileDataSource()
try {
fileDataSource.open(dataSpec)
} catch (e: FileDataSource.FileDataSourceException) {
e.printStackTrace()
}
val factory = DataSource.Factory { fileDataSource }
val mediaSource = ExtractorMediaSource(fileDataSource.uri, factory, DefaultExtractorsFactory(), null, null)
exoPlayer.prepare(mediaSource)
exoPlayer.repeatMode = Player.REPEAT_MODE_ONE
exoPlayer.playWhenReady = true
}
然而,过了一段时间后,我发现视频刚刚停在最后一帧。 我无法在与exoplayer相关的日志中看到任何内容。
这是我的设置:
Asus Tinkerboard与Marshmellow和通过HDMI端口连接的电视。屏幕始终开启。
编辑:我在ExoPlayer repo上创建了一个问题: https://github.com/google/ExoPlayer/issues/3239
答案 0 :(得分:0)
似乎这是由比视频轨道短的音频轨道引起的,当时ExoPlayer的当前版本会因此而挂起。
ExoPlayer团队在issue 1874中解决了这个问题,该问题已在ExoPlayer 2.6.0中发布,因此不应再在最新版本上发生。