ExoPlayer не воспроизводил видео mp4 - PullRequest
0 голосов
/ 07 января 2020

Я застрял, чтобы воспроизвести видео mp4 на exoplayer, но exoplayer запускает только видео mpd, пожалуйста, помогите мне решить эту проблему. застрял в игре

 lateinit var mDailyWorkOutShowCatResponseList: ArrayList<DailyWorkOutShowCatResponse>
        private lateinit var simpleExoplayer: SimpleExoPlayer
        private var playbackPosition = 0L
        private val dashUrl = "http://rdmedia.bbc.co.uk/dash/ondemand/bbb/2/client_manifest-separate_init.mpd"
        private val bandwidthMeter by lazy {
            DefaultBandwidthMeter()
        }
        private val adaptiveTrackSelectionFactory by lazy {
            AdaptiveTrackSelection.Factory(bandwidthMeter)
        }

        var mUrlStr:String = "http://rdmedia.bbc.co.uk/dash/ondemand/bbb/2/client_manifest-separate_init.mpd"


        fun videoPrepareImplementation(urlStr:String) {


            initializeExoplayer(urlStr)
        }

        override fun getDailyWorkByCategoryOutResponse(dailyWorkOutShowCatResponselist: ArrayList<DailyWorkOutShowCatResponse>) {

            videoPrepareImplementation(mUrlStr)

        }
        override fun onPlayerStateChanged(playWhenReady: Boolean, playbackState: Int) {
            if (playbackState == Player.STATE_BUFFERING)
                progressBar.visibility = View.VISIBLE
            else if (playbackState == Player.STATE_READY)
                progressBar.visibility = View.INVISIBLE
        } 
        private fun initializeExoplayer(urlStr: String) {
            simpleExoplayer = ExoPlayerFactory.newSimpleInstance(
                DefaultRenderersFactory(this),
                DefaultTrackSelector(adaptiveTrackSelectionFactory),
                DefaultLoadControl()
            )

            prepareExoplayer(urlStr)
            simpleExoPlayerView.player = simpleExoplayer
            simpleExoplayer.seekTo(playbackPosition)
            simpleExoplayer.playWhenReady = true
            simpleExoplayer.addListener(this)
        }

        private fun releaseExoplayer() {
            playbackPosition = simpleExoplayer.currentPosition
            simpleExoplayer.release()
        }

        private fun buildMediaSource(uri: Uri): MediaSource {
            val dataSourceFactory = DefaultHttpDataSourceFactory("ua", bandwidthMeter)
            val dashChunkSourceFactory = DefaultDashChunkSource.Factory(dataSourceFactory)
            return DashMediaSource(uri, dataSourceFactory, dashChunkSourceFactory, null, null)
        }

        private fun prepareExoplayer(urlStr: String) {
            val uri = Uri.parse(urlStr)
            val mediaSource = buildMediaSource(uri)
            simpleExoplayer.prepare(mediaSource)
        }

kinldy, помогите мне решить эту проблему

Ответы [ 2 ]

0 голосов
/ 18 марта 2020

просто используйте ProgressiveMediaSource, а функция buildMediaSource будет выглядеть как

private fun buildMediaSource(uri: Uri): MediaSource { 
val dataSourceFactory = DefaultHttpDataSourceFactory("ua", bandwidthMeter) 
return ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(uri) 
}

и будет воспроизводиться

0 голосов
/ 07 января 2020

Согласно кодовой лаборатории и по моему опыту это должно работать. Просто проверьте этот код лаборатории: - https://codelabs.developers.google.com/codelabs/exoplayer-intro/index.html?index=..%2F..index#0

В этом коде лаборатории mp3, mp4 и da sh URL работает нормально

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