如何解决将ExoPlayer从2.11.8升级到2.12.1并替换不赞成使用的组件后,我无法播放任何视频
我最近将com.google.android.exoplayer:exoplayer-core
从2.11.8版本升级到2.12.1版本。
以下代码段中的2.12.1版本弃用了某些组件。
cacheEvictor = LeastRecentlyUsedCacheEvictor(CACHE_SIZE_MAX)
databaseProvider = ExoDatabaseProvider(context)
cache = SimpleCache(File(context.cacheDir,CACHE_DIR),cacheEvictor,databaseProvider)
upstreamFactory = DefaultDataSourceFactory(context,USER_AGENT)
// CacheDataSourceFactory class is deprecated
cacheFactory = CacheDataSourceFactory(cache,upstreamFactory,CacheDataSource.FLAG_BLOCK_ON_CACHE or
CacheDataSource.FLAG_IGNORE_CACHE_ON_ERROR)
mediaSourceFactory = ProgressiveMediaSource.Factory(cacheFactory)
[...]
val url: Uri
val player: SimpleExoPlayer
[...]
// createMediaSource method is deprecated
val mediaSource = mediaSourceFactory.createMediaSource(uri)
// prepare method is deprecated
player.prepare(mediaSource,true,true)
因此,我用最新的组件替换了不推荐使用的组件。
cacheEvictor = LeastRecentlyUsedCacheEvictor(CACHE_SIZE_MAX)
databaseProvider = ExoDatabaseProvider(context)
cache = SimpleCache(File(context.cacheDir,USER_AGENT)
cacheFactory = CacheDataSource.Factory().apply {
setCache(this@VideoPlayer.cache)
setUpstreamDataSourceFactory(upstreamFactory)
setFlags(CacheDataSource.FLAG_BLOCK_ON_CACHE or
CacheDataSource.FLAG_IGNORE_CACHE_ON_ERROR)
}
mediaSourceFactory = ProgressiveMediaSource.Factory(cacheFactory)
[...]
val url: Uri
val player: SimpleExoPlayer
[...]
val mediaItem = MediaItem.fromUri(uri)
val mediaSource = mediaSourceFactory.createMediaSource(mediaItem)
player.setMediaSource(mediaSource,true)
// The following missed
player.prepare(mediaSource)
更新后,播放器为黑色,我无法播放任何视频(Logcat中没有任何用处)。 我已经返回不推荐使用的组件(仍然使用2.12.1版本),现在我可以播放每个视频了。
我认为在替换不推荐使用的组件时,我搞砸了。
有人可以帮我吗?
解决方法
我刚刚修复了答案中的代码:我忘记了最后一个player.prepare()
。
现在可以正常工作了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。