22

HlsMediaSource()方法已弃用(我目前正在使用exoplayer:2.6.1)。推荐用于 HLS 媒体的方法是什么?

4

3 回答 3

37

在深入研究源代码后,我得出结论

HlsMediaSource.Factory(dataFactory).createMediaSource(mediaUri)

是要走的路。

编辑:扩展其他工厂

根据2.6.1 发行说明,工厂模式也是实例化 ExtractorMediaSource、、、SsMediaSourceDashMediaSource的推荐方式。SingleSampleMediaSource

工厂方法简化MediaSource了实例化,尤其是在您希望配置可选参数同时将其他参数设置为默认值的情况下,例如

DashMediaSource.Factory(chunkSourceFactory, manifestDataSourceFactory)
    .setManifestParser(new CustomManifestParser())
    .createMediaSource(manifestUri, eventHandler, eventListener)
于 2018-01-30T11:50:27.460 回答
4

如果找不到 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)
于 2020-08-21T13:12:50.637 回答
0

您可以使用这种方式摆脱已弃用的

 val dataSourceFactory = DefaultDataSourceFactory(this, "sample")
    ProgressiveMediaSource.Factory(dataSourceFactory)
            .createMediaSource(MediaItem.fromUri(Uri.parse(uri)))
于 2021-08-07T19:12:23.220 回答