簡體   English   中英

在Exoplayer中使用Dynamicmediasource添加多個Audio Hlsmedia源,而無需暫停當前正在播放的Player。

[英]Adding multiple Audio Hlsmedia source using Dynamicmediasource In Exoplayer without pause currently playing Player.

我想使用Exoplayer制作動態音頻播放列表。我使用了DynamicMediaSource以及ConcateMediaSource可以正常工作,但是如果我的播放器當前正在播放並且我將嘗試添加mediasource,則當前播放器可以進入暫停狀態,而新添加的mediasource將處於最初,我將只為一個音頻創建媒體源,並使player.playWhenReady第一次為true。然后在列表中添加另一個源並為我的播放列表創建音頻源。 那么可以在沒有暫停播放器的情況下添加mediasouce嗎? 播放列表可以以其他方式播放嗎? 以下代碼用於創建第一個音頻的媒體來源:-

fun createAudioSource(data: MusicDetailResponse.AudioX, audioAllItem: MusicDetailResponse.Audio, position: Int) {

    player = ExoPlayerFactory.newSimpleInstance(context, DefaultTrackSelector())
    val userAgent = Util.getUserAgent(context, context.getString(R.string.label_user_agent))
    val dataSourceFactory = DefaultHttpDataSourceFactory(
            userAgent, null,
            DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
            1800000,
            true)

    val hlsMediaSource = HlsMediaSource.Factory(dataSourceFactory)
                .createMediaSource(Uri.parse(data.audio))
    player!!.prepare(hlsMediaSource)
    player!!.playWhenReady = true

}
fun addAudioList(item: MusicDetailResponse.AudioX) {
   tempAudioList.add(item)
   createHlsMediaSource(tempAudioList)
}

private fun createHlsMediaSource(tempAudioList: ArrayList<MusicDetailResponse.AudioX>) {
   for (i in 1 until tempAudioList.size) {
        val userAgent = Util.getUserAgent(context, context.getString(R.string.label_user_agent))
        val dataSourceFactory = DefaultHttpDataSourceFactory(
                userAgent, null,
                DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
                1800000,
                true)
        val hlsMediaSource = HlsMediaSource.Factory(dataSourceFactory)
                .createMediaSource(Uri.parse(tempAudioList[i].audio))
        cMediaSource!!.addMediaSource(hlsMediaSource)
    }

    player?.prepare(cMediaSource, false, false)

}

將所有出現的DynamicConcatenatingMediaSource重命名為ConcatenatingMediaSource。

曾經想在您的Android應用程序中支持媒體播放列表嗎?用戶可以在播放過程中在其中任意添加和刪除播放列表項嗎? 現在你可以!

從ExoPlayer 2.8.0開始,我們已經使用動態播放列表功能更新了ConcatenatingMediaSource。 從表面上看,新媒體源具有非常簡單明了的界面:

addMediaSource(mediaSource)在播放列表的末尾追加一個新的媒體源。 addMediaSource(index,mediaSource)在播放列表中的指定索引處插入新的媒體源。 addMediaSources(Collection)批量在播放列表的末尾追加一整套新的媒體源。 addMediaSources(index,Collection)批量在播放列表中的指定索引處插入一組新的媒體源。 removeMediaSource(index)刪除給定索引處的媒體源。 moveMediaSource(fromIndex,toIndex)在播放列表中移動現有的媒體源。 這很有用,因為您不必創建新的MediaSource對象。 您還可以在當前正在播放的項目中移動,而不會中斷播放。 getMediaSource(index)允許您訪問給定索引處的媒體源。 getSize()返回當前播放列表的長度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM