Добавление нескольких источников Audio Hlsmedia с использованием Dynamicmediasource В Exoplayer без паузы, в данный момент воспроизводится Player - PullRequest
0 голосов
/ 07 сентября 2018

Я хочу создать Dynamic Audio Playlist, используя Exoplayer. Я использовал DynamicMediaSource, а также ConcateMediaSource, он будет работать нормально, но если мой проигрыватель в данный момент играет и я попытаюсь добавить mediasource, тогда текущий проигрыватель может перейти в состояние паузы и добавить его заново. mediasource будет воспроизводиться. Изначально я создам источник мультимедиа только для одного аудио и сделаю player.playWhenReady true только для первого раза. Затем добавлю еще один источник в список и создаю источник аудио для моего списка воспроизведения. Так можно ли добавить медиасоус без паузы плеера? А плейлист можно играть в добавленной манере? код ниже для создания медиа-источника для первого аудио: -

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)

}

1 Ответ

0 голосов
/ 07 сентября 2018

Переименовано все вхождения 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 () возвращает текущую длину списка воспроизведения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...