позиция go назад при использовании какого-либо файла mpd в Exoplayer - PullRequest
0 голосов
/ 14 июля 2020

Я тестирую mpd файл в My Exoplayer. Я искал несколько тестовых URL-адресов и нашел сайт тестовых URL-адресов github. Когда я пробую некоторые URL-адреса в примере guthub, моя позиция exoplayer go назад на 5 секунд периодически. позиция продвигается вперед до 3 секунд, и внезапно go назад до 0 секунд. Если я остановлю exoplayer, позиция go будет меньше - 10:00. Я не понимаю этого ... дайте мне знать, что происходит ...

URL здесь, https://github.com/Dash-Industry-Forum/dash-live-source-simulator/wiki/Test-URLs

и вот мой код экзоплеера Мой Exoplayer

class MyExoPlayer(val context: Context,val binding:PlayerView
                  ,val listener : Player.EventListener, val url :String,val volume:Float,val type:String) {
    val mediaReceiver = MediaReceiver()
    lateinit var defaultDataSourceFactory  : DefaultHttpDataSourceFactory
    lateinit var mediaSourceFactory : AdsMediaSource.MediaSourceFactory
    private var player: SimpleExoPlayer? = null

    private var playWhenReady = true
    private var currentWindow = 0
    private var playbackPosition: Long = 0

    fun initializePlayer() {
        if (player == null) {


            val trackSelector = DefaultTrackSelector()
            trackSelector.setParameters(
                trackSelector.buildUponParameters().setMaxVideoSizeSd().setMaxAudioChannelCount(8)
            )

            player = ExoPlayerFactory.newSimpleInstance(context,trackSelector)
            player!!.volume = volume
            val playBackParameters = PlaybackParameters(1f,1f)
            player!!.playbackParameters = playBackParameters
            binding.player = player
            binding.useController=true
            binding.background = context.getDrawable(R.color.colorTransparent)//context.getColor(R.color.colorAccent)
            defaultDataSourceFactory = DefaultHttpDataSourceFactory(context.getString(R.string.app_name))
            mediaSourceFactory = ProgressiveMediaSource.Factory(defaultDataSourceFactory)

            var mediaSource :MediaSource ?= null

            if(type=="DASH"){
                mediaSource =buildMediaSource(Uri.parse(url))!!
            }else{
                mediaSource  = mediaSourceFactory.createMediaSource(Uri.parse(url))
            }

            player!!.prepare(mediaSource,false,false)
            player!!.seekTo(currentWindow, playbackPosition)
            player!!.playWhenReady = playWhenReady
            setAudioFocus()
            player!!.addListener(listener)

        }
    }

    private fun releasePlayer() {
        player?.let {
            playbackPosition = it.currentPosition
            currentWindow = it.currentWindowIndex
            playWhenReady = it.playWhenReady
            it.release()
            player = null
        }
    }



    inner class MediaReceiver : BroadcastReceiver() {
        override fun onReceive(context: Context, intent: Intent) {
            if (AudioManager.ACTION_AUDIO_BECOMING_NOISY == intent.action) {
                player?.playWhenReady = false
            }
        }
    }

    fun setPlaybackParams(speed:Float,pitch:Float){
        player!!.playbackParameters = PlaybackParameters(speed,pitch)
    }

    private fun buildMediaSource(uri: Uri): MediaSource? {
        val dataSourceFactory: DataSource.Factory =
            DefaultDataSourceFactory(context, "ua")
        return DashMediaSource.Factory(dataSourceFactory)
            .createMediaSource(uri)
    }

    fun setPlayWhenReady(){
        player!!.playWhenReady = !player!!.playWhenReady
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...