Как я могу потоковое видео .m3u8 видео в Exoplayer? - PullRequest
0 голосов
/ 13 марта 2020

Ниже приведен код инициализации Exoplayer.

 private void initializePlayer(String path) {
   player = ExoPlayerFactory.newSimpleInstance(mContext, trackSelector);
   player.addListener(componentListener);
   Uri uri = Uri.parse(path);
   MediaSource mediaSource = buildMediaSource(uri);
   player.prepare(mediaSource, true, false);
   playerView.setPlayer(player);
 }

1 Ответ

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

Инициализируйте проигрыватель и передайте ему URL для воспроизведения любого типа видео в exoplayer:

  public void initPlayer() {
    BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
    TrackSelection.Factory videoTrackSelectionFactory =
            new AdaptiveTrackSelection.Factory(bandwidthMeter);
    TrackSelector trackSelector = new
            DefaultTrackSelector(videoTrackSelectionFactory);
    player = ExoPlayerFactory.newSimpleInstance(this, trackSelector);
    VideoSource = buildMediaSource(uri);
    ExoPlayerView.setPlayer(player);
}

и функция источника медиа сборки:

private MediaSource buildMediaSource(Uri uri) {
    String userAgent = Util.getUserAgent(this, getApplicationContext().getApplicationInfo().packageName);
    DefaultHttpDataSourceFactory httpDataSourceFactory = new DefaultHttpDataSourceFactory(userAgent, null, DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS, DefaultHttpDataSource.DEFAULT_READ_TIMEOUT_MILLIS, true);
    DefaultDataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(VideoPlayer.this, null, httpDataSourceFactory);
    TextUtils.isEmpty(null);
    int type = Util.inferContentType(uri);
    switch (type) {
        case C.TYPE_SS:
            return new SsMediaSource.Factory(dataSourceFactory).createMediaSource(uri);
        case C.TYPE_DASH:
            return new DashMediaSource.Factory(dataSourceFactory).createMediaSource(uri);
        case C.TYPE_HLS:
            return new HlsMediaSource.Factory(dataSourceFactory).createMediaSource(uri);
        case C.TYPE_OTHER:
            return new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(uri);
        default: {
            throw new IllegalStateException("Unsupported type: " + type);
        }
    }
}

Также вызовите initPlayer () в вашей деятельности по созданию функции

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