HlsMediaSource()
方法已被弃用(我目前使用的是exoplayer:2.6.1
)。推荐使用哪种方法代替HLS媒体?
HlsMediaSource()
方法已被弃用(我目前使用的是exoplayer:2.6.1
)。推荐使用哪种方法代替HLS媒体?
经过深入研究源代码,我得出结论:
HlsMediaSource.Factory(dataFactory).createMediaSource(mediaUri)
工厂模式是最佳实践,用于实例化ExtractorMediaSource
、SsMediaSource
、DashMediaSource
和SingleSampleMediaSource
,如2.6.1版本说明所述。
工厂方法简化了MediaSource
的实例化,特别是在您希望配置可选参数而将其他参数设置为默认值时。
DashMediaSource.Factory(chunkSourceFactory, manifestDataSourceFactory)
.setManifestParser(new CustomManifestParser())
.createMediaSource(manifestUri, eventHandler, eventListener)
如果你找不到 HlsMediaSource,你需要添加一个额外的依赖项:
implementation "com.google.android.exoplayer:exoplayer-hls:$exoplayer_version"
val userAgent = Util.getUserAgent(context, USER_AGENT)
DefaultDataSourceFactory(
context,
userAgent
)
val source = "https://some_url_link"
val uri = source.toUri()
HlsMediaSource.Factory(factory).createMediaSource(uri)
val dataSourceFactory = DefaultDataSourceFactory(this, "sample")
ProgressiveMediaSource.Factory(dataSourceFactory)
.createMediaSource(MediaItem.fromUri(Uri.parse(uri)))
您应该使用最新版本:com.google.android.exoplayer:exoplayer:2.18.2
这段代码适用于您:
val defaultHttpDataSourceFactory = DefaultHttpDataSource.Factory()
val mediaItem = MediaItem.fromUri(URL)
val mediaSource = HlsMediaSource.Factory(defaultHttpDataSourceFactory).createMediaSource(mediaItem)
exoPlayer?.apply {
setMediaSource(mediaSource)
seekTo(playbackPosition)
playWhenReady = playWhenReady
prepare()
}
val dataFactory = DefaultDataSourceFactory(context, "ua")
@Abhishekval dataFactory = DefaultDataSourceFactory(context,“ua”)
- Algar