ExoPlayer иногда возвращает отрицательную продолжительность для mp3-файла с URL - PullRequest
0 голосов
/ 29 апреля 2020

Я создаю приложение, в котором я играю .mp3 файлы с URL. Я использую последнюю версию ExoPlayer 2.11.4.

Что мне нужно сделать, это получить общую длительность аудио из URL, чтобы я мог использовать его в своем пользовательском аудиоплеере.

URL-адреса, которые я использую, относятся к этому типу: https://myserver.net/.../audio/439688e0c3626d39d3ef3.mp3?token=6oz-22-2sa-9yh-7e-2iak

Проблема заключается в том, что иногда мой код работает правильно большую часть времени и возвращает правильную продолжительность. Но иногда я получаю отрицательное число: -9223372036854775807

И это не позволяет моему коду работать должным образом. Мой код, откуда я получаю длительность:

fun getDuration(url: String, context: Context) {
        exoPlayer?.release()

        exoPlayer = SimpleExoPlayer.Builder(context).build()
        val dataSourceFactory = DefaultDataSourceFactory(context, Util.getUserAgent(context, "ExoPlayer"))
        val mediaSource = ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(Uri.parse(url))

        exoPlayer?.prepare(mediaSource)

        exoPlayer?.addListener(object : Player.EventListener {
            override fun onPlayerStateChanged(playWhenReady: Boolean, playbackState: Int) {
                if (playbackState == ExoPlayer.STATE_READY) {
                    val realDurationMillis: Long? = exoPlayer?.getDuration()
                    currentDuration = realDurationMillis
                    if (currentDuration != null) {
                        if (currentDuration!! > 0) {
                            exoPlayer?.release()
                        }
                    }

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