首先,请确保您使用的是最新版本的Exoplayer(2.18.1)。您可以使用以下代码将其添加到gradle文件中:
implementation 'com.google.android.exoplayer:exoplayer:2.18.1'
接下来,您需要创建一个带有多个媒体源的MediaSource对象。您可以使用以下代码示例:
val mediaSourceList = ArrayList()
val mediaSource1 = ProgressiveMediaSource.Factory(dataSourceFactory)
.createMediaSource(firstUri)
val mediaSource2 = ProgressiveMediaSource.Factory(dataSourceFactory)
.createMediaSource(secondUri)
mediaSourceList.add(mediaSource1)
mediaSourceList.add(mediaSource2)
val mediaSources = MediaSourceArray(mediaSourceList.toTypedArray())
在这里,您需要使用ProgressiveMediaSource.Factory来创建每个媒体源。dataSourceFactory是以下代码的实例:
val dataSourceFactory = DefaultDataSourceFactory(
context,
Util.getUserAgent(context, context.packageName)
)
最后,您需要使用ConcatenatingMediaSource将上述媒体源合并为单个对象。以下是示例代码:
val concatenatingMediaSource = ConcatenatingMediaSource()
concatenatingMediaSource.addMediaSources(mediaSources)
现在,您只需要将ConcatenatingMediaSource作为媒体源传递给Exoplayer即可播放多个文件。
player?.prepare(concatenatingMediaSource)
记得在不需要播放时及时释放播放器资源。
player?.release()