当前位置: 首页 > wzjs >正文

网站开发专员绩效考核网站渗透

网站开发专员绩效考核,网站渗透,深圳企业网站制作公司,做各企业网站大概多少钱ExoPlayer 的 Timeline 系统设计用于抽象化媒体内容的组织方式,无论是点播视频、直播流还是多内容播放列表。Timeline 提供了一个统一的方式来描述内容的时间范围、结构和元数据,而 Timeline.Period 和 Timeline.Window 分别是其更细粒度的子结构。 Tim…

ExoPlayer 的 Timeline 系统设计用于抽象化媒体内容的组织方式,无论是点播视频、直播流还是多内容播放列表。Timeline 提供了一个统一的方式来描述内容的时间范围、结构和元数据,而 Timeline.PeriodTimeline.Window 分别是其更细粒度的子结构。

Timeline

Timeline 是 ExoPlayer 的抽象基类,表示媒体内容的整体时间轴结构。它包含一组窗口(Window)和周期(Period),每个窗口可能包含一个或多个周期。Timeline 可以是静态的(如点播视频,固定时长)或动态的(如直播流,窗口随时间滑动)。

主要方法:

  • getWindowCount():返回时间轴中的窗口数量。
  • getWindow(int windowIndex, Timeline.Window window):获取指定索引的窗口信息,填充到提供的 Timeline.Window 对象。
  • getPeriodCount():返回时间轴中的周期数量。
  • getPeriod(int periodIndex, Timeline.Period period):获取指定索引的周期信息。
  • getLastWindowIndex(boolean shuffleModeEnabled):返回最后一个窗口的索引(在直播中通常是当前可用窗口)。
  • getIndexOfPeriod(Object uid):根据周期的唯一 ID 查找其索引。

典型场景:

  • 点播:一个 Timeline 包含一个窗口(整个视频)和一个或多个周期(章节或广告)。
  • 直播:一个 Timeline 包含一个动态窗口(当前可用的直播内容)和多个周期(流的分段)。
  • 播放列表:一个 Timeline 包含多个窗口(每个视频)和对应的周期。

代码示例:

Timeline timeline = player.getCurrentTimeline();
if (!timeline.isEmpty()) {Timeline.Window window = new Timeline.Window();timeline.getWindow(timeline.getLastWindowIndex(false), window);Log.d(TAG, "Window duration: " + window.getDurationMs());
}
Timeline.Window

Timeline.Window 表示时间轴上的一个逻辑时间窗口,通常对应一个连续的播放内容段。每个窗口有自己的时间范围(开始时间、持续时间)和元数据(如是否动态、是否可寻址)。

关键字段:

  • long presentationStartTimeMs:窗口内容的“呈现”开始时间(以毫秒为单位),通常是内容的逻辑开始时间(例如,直播流的节目开始时间)。如果未知,设为 C.TIME_UNSET
  • long windowStartTimeMs:窗口在时间轴上的实际开始时间(以毫秒为单位),通常用于直播流的时间计算。如果未知,设为 C.TIME_UNSET
  • long durationUs:窗口的持续时间(以微秒为单位)。如果是直播流,可能是当前窗口的可用时长。
  • boolean isDynamic:指示窗口是否动态(即内容可能随时间更新,如直播流的滑动窗口)。
  • boolean isSeekable:指示窗口是否支持寻址(seek),通常点播为 true,直播可能为 false
  • long defaultPositionUs:窗口的默认播放起始位置(以微秒为单位),用于初始化播放。

典型场景:

  • 直播:窗口表示当前可用的直播内容(滑动窗口),windowStartTimeMsdurationUs 定义其时间范围。
  • 点播:窗口表示整个视频,durationUs 是视频总时长。
  • 广告:窗口可能表示主内容或广告段。

代码示例:

Timeline.Window window = new Timeline.Window();
timeline.getWindow(timeline.getLastWindowIndex(false), window);
if (window.isDynamic) {Log.d(TAG, "Live window, duration: " + C.usToMs(window.durationUs) + "ms");
}
Timeline.Period

Timeline.Period 表示窗口内的一个逻辑分段,通常对应媒体内容的子部分(如 DASH 的一个 Period 或 HLS 的一个片段组)。周期是窗口的更细粒度划分,可能包含多个媒体片段(chunk)。

关键字段:

  • Object id:周期的唯一标识符,用于区分不同的周期。
  • long durationUs:周期的持续时间(以微秒为单位)。如果未知,设为 C.TIME_UNSET
  • long positionInWindowUs:周期相对于窗口开始的偏移量(以微秒为单位)。
  • int windowIndex:周期所属的窗口索引。
  • boolean isAd:指示周期是否为广告内容。

典型场景:

  • 直播:周期表示 HLS 或 DASH 流中的一个时间段(例如,10 秒的媒体片段)。
  • 点播:周期可能表示视频的章节或广告插入点。
  • 播放列表:每个窗口的子内容可能由多个周期组成。

代码示例:

Timeline.Period period = new Timeline.Period();
timeline.getPeriod(timeline.getCurrentPeriodIndex(), period);
Log.d(TAG, "Period duration: " + C.usToMs(period.durationUs) + "ms");

TimelineTimeline.WindowTimeline.Period 的关系可以用以下结构表示:

Timeline
├── Window 0
│   ├── Period 0
│   ├── Period 1
│   └── ...
├── Window 1
│   ├── Period 0
│   └── ...
└── ...

一个 Timeline 包含多个 Window,每个 Window 包含一个或多个 PeriodWindow 定义宏观时间范围(如直播流的当前窗口),Period 定义窗口内的细粒度分段(如流的一个片段)。

WindowwindowStartTimeMsdurationUs 定义全局时间范围。PeriodpositionInWindowUs 表示其在窗口中的相对位置。播放位置(positionUs)通常相对于某个周期,通过 Period 映射到窗口时间,再通过 Window 映射到全局时间。

在直播场景中,Timeline 是动态的(isDynamic = true),新窗口或周期会随时间添加,旧周期可能被移除(滑动窗口)。ExoPlayer 通过 Player.EventListeneronTimelineChanged 事件通知 Timeline 更新。

工作流程:

ExoPlayer 从 MediaSource(如 DashMediaSourceHlsMediaSource)加载 TimelineTimeline 提供窗口和周期信息,ExoPlayer 使用它们确定播放位置(player.getCurrentPosition())和内容边界。直播流的 Timeline 定期更新,反映新的窗口或周期(例如,HLS 播放列表刷新)。播放器通过 Timeline 导航内容(如 seekTo(windowIndex, positionMs))。

使用示例:

获取当前播放位置:

Timeline timeline = player.getCurrentTimeline();
Timeline.Window window = new Timeline.Window();
Timeline.Period period = new Timeline.Period();
timeline.getWindow(player.getCurrentWindowIndex(), window);
timeline.getPeriod(player.getCurrentPeriodIndex(), period);
long positionMs = player.getCurrentPosition();
Log.d(TAG, "Window: " + window.windowStartTimeMs + ", Period: " + period.positionInWindowUs + ", Position: " + positionMs);

处理直播滑动窗口:

player.addListener(new Player.Listener() {@Overridepublic void onTimelineChanged(Timeline timeline, int reason) {if (timeline.isEmpty()) return;Timeline.Window window = new Timeline.Window();timeline.getWindow(timeline.getLastWindowIndex(false), window);if (window.isDynamic) {Log.d(TAG, "Live window updated, duration: " + C.usToMs(window.durationUs));}}
});

跳转到直播边缘:

Timeline timeline = player.getCurrentTimeline();
Timeline.Window window = new Timeline.Window();
timeline.getWindow(timeline.getLastWindowIndex(false), window);
player.seekTo(window.windowIndex, window.getDefaultPositionUs());

频繁调用 getWindowgetPeriod 可能影响性能,建议缓存 Timeline 数据或在必要时更新。


文章转载自:

http://xAhOmYHt.yrfLh.cn
http://0IU3d9rX.yrfLh.cn
http://QQBrW2hS.yrfLh.cn
http://4LsgcIyx.yrfLh.cn
http://wxGmV5B8.yrfLh.cn
http://eSngI7sI.yrfLh.cn
http://ZtM5Dby8.yrfLh.cn
http://eGin6faz.yrfLh.cn
http://qun7ft5D.yrfLh.cn
http://Hwsq5rz4.yrfLh.cn
http://jxu0IIFv.yrfLh.cn
http://bdAwFeM8.yrfLh.cn
http://OAzPhqi8.yrfLh.cn
http://kDnxpoPE.yrfLh.cn
http://sWDJLgPu.yrfLh.cn
http://8YiyN9Ik.yrfLh.cn
http://EMsLelFE.yrfLh.cn
http://UiaFYEGs.yrfLh.cn
http://gUDvDP2X.yrfLh.cn
http://ozbMsaVA.yrfLh.cn
http://3GHODUvF.yrfLh.cn
http://bwwCDwCF.yrfLh.cn
http://RqbAYxjT.yrfLh.cn
http://YQka2KQG.yrfLh.cn
http://2ImWTkTo.yrfLh.cn
http://GUpAQuvH.yrfLh.cn
http://hrwfykCy.yrfLh.cn
http://kr4VCxiI.yrfLh.cn
http://ymKil5sf.yrfLh.cn
http://fPv0nSTt.yrfLh.cn
http://www.dtcms.com/wzjs/746074.html

相关文章:

  • 营销型网站的类型有哪些wordpress 大型站
  • 秦皇岛北京网站建设搜索网站的软件有哪些
  • 电子商务网站建设和管理的意义页面紧急情况访问升级跳拿笔记
  • 网站建设模块是什么怎么样推销自己网站
  • 一个网站做多访问量网站做很多关键词
  • 湖南张家界建设厅网站网站备案密码收不到
  • 扁平化网站 源代码有什么做ppt的网站吗
  • 网站最初的索引量从何而来建设网站需要准备什么手续
  • 仿xss网站搭建分类信息多城市网站
  • 柳州网站建设多少钱沈阳建设工程信息网平台电话
  • 高端网站设计建设设计工作室的经营范围
  • 网站侧面菜单展开怎么做搜建筑网建筑规范大全
  • 珠海网站怎样建设小程序源码是什么
  • 新乡定制网站建设公司公司做网站的优势
  • 德赞网站建设网站制作一般通过是什么意思
  • 云朵课堂网站开发怎么收费企业官网的作用
  • 寻找扬中网站建设小米品牌vi设计
  • rikka.top wordpresswordpress seo不好
  • 南宁建站公司有哪些wordpress 运行天数 小工具
  • 网站关键词优化哪家正规什么平台引流最快
  • 卓企做的网站怎么样大三亚app下载
  • 网站推广 济南html网站两边的浮窗怎么做
  • 海南茶叶网站建设nginx wordpress 主题
  • 重庆排名优化整站优化品牌网站如何做seo
  • 汕头专业的免费建站长沙网站外包
  • 环保工程东莞网站建设crm客户管理系统api
  • 企业网站 模版wordpress禁止google
  • 云一网站公司中国海洋大学站群网站建设
  • 网站首页快照更新快模板网站制作
  • 网站建设案例教程视频龙游发布紧急提示