Android ExoPlayer是否公开了一种区分滑动播放列表和完整实时播放列表的方法
我正在使用ExoPlayer 2.6.1播放实时HLS,并且需要能够判断HLS播放列表是滑动窗口还是完整的播放列表(不断增长)。我想根据正在使用的播放列表类型显示不同的播放器控件,但我无权访问该元数据。所以我很好奇是否有可能从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 或 根据事件类型,您称之为完整的实时
我认为我可以使用,但我似乎无法区分。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;
}
}
}
});