Exoplayer View не может найти функцию player.prepare () - PullRequest
0 голосов
/ 15 мая 2018

В настоящее время у меня проблема с новой версией Exoplayer .Ниже приведен код, используемый для запуска игрока.В getPlayerStart () я передаю ссылку.В initExoPlayer () я инициализирую свой Exoplayer , но в более ранней версии Exoplayer я сталкиваюсь с этой проблемой:

mExoPlayerView !!. Player.prepare (mVideoSource):

Указанная выше функция недоступна

private fun getPlayerStart(urlLink: String) {
        if (playerMode) {
            val userAgent = Util.getUserAgent(context, context!!.getApplicationInfo().packageName)
            val httpDataSourceFactory = DefaultHttpDataSourceFactory(userAgent, null, DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS, DefaultHttpDataSource.DEFAULT_READ_TIMEOUT_MILLIS, true)
            val dataSourceFactory = DefaultDataSourceFactory(context, null, httpDataSourceFactory)
            Log.i("Video",urlLink)
            val daUri = Uri.parse(urlLink)
            val extractorsFactory = DefaultExtractorsFactory()
            mVideoSource = ExtractorMediaSource(daUri, dataSourceFactory,
                    extractorsFactory, null, null) as MediaSource?
        }
        initExoPlayer()

    }


 private fun initExoPlayer() {
        val bandwidthMeter = DefaultBandwidthMeter()
        val videoTrackSelectionFactory = AdaptiveTrackSelection.Factory(bandwidthMeter)
        val trackSelector = DefaultTrackSelector(videoTrackSelectionFactory)
        val loadControl = DefaultLoadControl()
        player = ExoPlayerFactory.newSimpleInstance(DefaultRenderersFactory(context), trackSelector, loadControl)
        mExoPlayerView!!.player= this.player
        player!!.addListener(this)

        mExoPlayerView!!.player.prepare(mVideoSource)
        mExoPlayerView!!.getPlayer().playWhenReady = true
    }

1 Ответ

0 голосов
/ 19 июня 2019

Метод prepare() является частью интерфейса ExoPlayer, который расширяет интерфейс Player.

PlayerView предоставляет только интерфейс Player, который не имеет метода подготовки. Вот почему вы не можете сделать mExoPlayerView!!.player.prepare(mVideoSource).

Однако используемый вами ExoPlayerFactory возвращает экземпляр SimpleExoPlayer, который реализует интерфейс ExoPlayer:

SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(new DefaultRenderersFactory(context), trackSelector, loadControl);
player.prepare(mediaSource);

Вот ссылки на классы интерфейса ExoPlayer и Player, а также SimpleExoPlayer:

https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/Player.html https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/ExoPlayer.html https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/SimpleExoPlayer.html

...