Android ExoPlayer是否公开了一种区分滑动播放列表和完整实时播放列表的方法

Android ExoPlayer是否公开了一种区分滑动播放列表和完整实时播放列表的方法,android,exoplayer,exoplayer2.x,Android,Exoplayer,Exoplayer2.x,我正在使用ExoPlayer 2.6.1播放实时HLS,并且需要能够判断HLS播放列表是滑动窗口还是完整的播放列表(不断增长)。我想根据正在使用的播放列表类型显示不同的播放器控件,但我无权访问该元数据。所以我很好奇是否有可能从ExoPlayer本身获得这些信息 我认为我可以使用,但我似乎无法区分。HLS播放列表可以有三种不同的类型:实时(默认)、事件或vod()。对于事件或vod,类型在播放列表中设置为 #EXT-X-PLAYLIST-TYPE:EVENT 或 根据事件类型,您称之为完整的实时

我正在使用ExoPlayer 2.6.1播放实时HLS,并且需要能够判断HLS播放列表是滑动窗口还是完整的播放列表(不断增长)。我想根据正在使用的播放列表类型显示不同的播放器控件,但我无权访问该元数据。所以我很好奇是否有可能从ExoPlayer本身获得这些信息


我认为我可以使用,但我似乎无法区分。HLS播放列表可以有三种不同的类型:实时(默认)、事件或vod()。对于事件或vod,类型在播放列表中设置为

#EXT-X-PLAYLIST-TYPE:EVENT

根据事件类型,您称之为完整的实时播放列表:

如清单2所示,事件播放列表的格式与实时播放列表的格式相同 上面的媒体播放列表,除一行外: #EXT-X-PLAYLIST-TYPE:事件。该名称提醒媒体播放器,此播放列表的行为将不同于实时媒体播放列表。 事件播放列表维护对旧媒体的引用,同时获得 新的参考资料

使用ExoPlayer,您可以注册侦听器以侦听时间线更改。回调有一个清单参数,您可以参考:

player.addListener(new Player.DefaultEventListener() {
  @Override
  public void onTimelineChanged(Timeline timeline, Object manifest, int reason) {
    if (manifest != null) {
      switch (((HlsManifest)manifest).mediaPlaylist.playlistType) {
        case HlsMediaPlaylist.PLAYLIST_TYPE_VOD:
          Log.d("TAG", "playlist type VOD");
          break;
        case HlsMediaPlaylist.PLAYLIST_TYPE_EVENT:
          Log.d("TAG", "playlist type EVENT");
          break;
        default:
          Log.d("TAG", "playlist type LIVE");
          break;
      }
    }
  }
});

我不确定我是否遵循了我可以键入的内容,以判断它是滑动还是完整的播放列表。您能否详细说明如何使用WindowMS中的位置值来确定它?我将答案更改为HLS特定的解决方案。这似乎更容易、更可靠。
player.addListener(new Player.DefaultEventListener() {
  @Override
  public void onTimelineChanged(Timeline timeline, Object manifest, int reason) {
    if (manifest != null) {
      switch (((HlsManifest)manifest).mediaPlaylist.playlistType) {
        case HlsMediaPlaylist.PLAYLIST_TYPE_VOD:
          Log.d("TAG", "playlist type VOD");
          break;
        case HlsMediaPlaylist.PLAYLIST_TYPE_EVENT:
          Log.d("TAG", "playlist type EVENT");
          break;
        default:
          Log.d("TAG", "playlist type LIVE");
          break;
      }
    }
  }
});