# 云映 HLS 状态记录：分开 EVENT、VOD 与清单结束标记

语言：zh-CN
原文：[云映 HLS 状态记录：分开 EVENT、VOD 与清单结束标记](<https://allluckly.cn/guides/icouldplay-hls-playlist-type-endlist-snapshot-check/>)
中文：[中文 HTML](<https://allluckly.cn/guides/icouldplay-hls-playlist-type-endlist-snapshot-check/>)
English: [English HTML](<https://allluckly.cn/en/guides/icouldplay-hls-playlist-type-endlist-snapshot-check/>)
发布于: 2026-11-11T00:00:00+08:00
内容更新于: 2026-11-11T00:00:00+08:00
署名：Bison

比较两个时间的清单快照，分开可追加状态、结束声明与实际可播范围。

视频文件名带 live，或者清单里有 EVENT，都不足以替你回答“这次观看还能继续增加多少内容”。本课给自己可管理的 HLS 来源建立两次清单快照，再把声明状态与云映实际可见的播放范围分开记录。没有可用服务器时也能完成下方纸面样本的分类，但不能把纸面推导写成已经完成的在线测试。

## 一、先确认要读的是媒体清单

选自己有权访问、能够取得清单文本的 HLS 素材，记录来源与取得时间。先检查文件中有没有媒体分片与 EXTINF 时长；若只有清晰度与子清单地址，就先定位实际媒体清单，不拿主清单的几条选项当节目分片。原文本按时间另存为快照 A，不直接在远端文件上编辑。接着在云映用当前已有方式打开该来源，确认可播放后记下片名和当前能观察到的开头、结尾或播放范围。若拿不到清单文本，记录“只观察播放器，未检查声明”；这仍是清楚的任务状态，不需要通过猜文件名补出不存在的字段。

## 二、给三个教学卡片分别分类

下方三个卡片是为阅读状态构造的文本摘录，不是完整可播放清单，也没有本站托管的真实分片。先看 A 与 B：两者类型相同，但 B 多出结束标记；再看 C，类型与 A 不同。把“类型字段”和“有无结束标记”画成两列，不能因为 EVENT 与 ENDLIST 都以大写出现，就把它们当同一种开关。再加一列“已观察的真实播放范围”，纸面卡片这一列一律写未执行。通过这种分类，你可以在没有服务器的情况下练习读声明，同时保留从声明到实际观看之间仍需验证的步骤。

```
Card A
#EXT-X-PLAYLIST-TYPE:EVENT
(segment entries omitted)

Card B
#EXT-X-PLAYLIST-TYPE:EVENT
(segment entries omitted)
#EXT-X-ENDLIST

Card C
#EXT-X-PLAYLIST-TYPE:VOD
(segment entries omitted)
#EXT-X-ENDLIST
```

## 三、写清类型与结束标记回答的问题

根据[RFC 8216 清单类型与结束标记](<https://www.rfc-editor.org/rfc/rfc8216.html#section-4.3.3.4>)，ENDLIST 表示该媒体清单不再增加分片；类型 EVENT 仅可向末尾追加，已有部分不得改变或删除，VOD 的清单不能改变。类型缺省也不能自动当作 VOD。把这些含义简短写到纸面卡片旁，不延伸为“EVENT 必定此刻正在直播”或“ENDLIST 能证明我已下载全部素材”。卡片 B 正好说明事件类清单可以出现结束声明。此处读的是清单文本的约束与声明，实际服务器是否保持可用、分片是否还能取得，要另行检查，不应被类型名称或一个结尾标签代替。

## 四、取得第二份快照，比较新增与移出

对实际来源，在稍后你能够明确记录的时间再次取得同一个媒体清单，保存为快照 B。不要覆盖 A，并确认来源路径与选择的变体相同。逐项比较类型字段、结束标记、媒体序号起点、首个与末个分片身份，记录新增条目与移出条目；如果两次完全相同，就写“这两个时点未发现文本变化”，不据此保证未来永远不变。若来源声明 EVENT 却看到早期条目消失，先核是否换了地址、快照是否完整、服务端是否返回不同内容，再把发现作为待查差异。不要为了符合预期手工补回条目或修改快照。

## 五、在云映记录当前范围，不把时间轴当服务器保证

回到云映，记下现在能看到的播放位置与大致可达范围，先顺播一段，再在可用时间轴上尝试回到已看过的一个内容点。记录实际能否播放该点、画面身份与声音是否对应，不仅看进度条是否能拖动。若更晚出现新内容，补充观察时间；若没有出现，不能仅凭等待就确定服务器已经结束。播放界面显示的时长、片段窗口与服务端完整事件范围可能不是同一概念，因此原样记录标签或可见数字，避免替界面改名为“总节目永久长度”。没有相应时间轴时就保留顺播观察，不编造回看按钮。

## 六、把清单完成、下载完成与观看完成分开

给记录增加三项独立状态：清单是否有结束声明、所需文件是否完整取得、自己是否已经观看到目标结束点。教学卡片 B 与 C 只允许你填写第一项，不自动通过另外两项。实际来源即使已出现 ENDLIST，分片地址也可能失效或自己尚未看完；反过来，你看完当前可播段，也不能据此确认未来不会新增内容。若要离线观看，应回到完整离线文件的核对流程，而不是只保存一个清单文本。每一项旁边写依据，例如“快照 B 含标签”“文件逐项取得”或“顺播看到自制结束卡”，别把三种不同成果都缩写成一个含糊的“完成”。

## 七、问题排查：旧快照、窗口变化与来源切换

若两份快照与播放器范围对不上，先检查取得时间和来源身份，再看是否换了变体或同名清单。旧快照可能仍列出目前不再可访问的条目；不要把失效地址当作云映必然丢失本地文件。若时间轴回到某点失败而顺播正常，把两条路径分别记录，先不要清空媒体库或删除原始素材。若文本只有错误页面，先解决取得清单的问题，不以页面中偶然出现的 EVENT 字样分类。对自己管理的来源可以把两份原文与观察交给服务端排查，但对外分享时使用自制样本与公开路径，不把私人访问地址当教程必需资料。

## 八、完成检查与下一次观察入口

完成时，纸面卡片应有三组独立分类，真实来源应有按时间保存的两份原文及逐项差异；未执行的环节明确标记。检查结论没有把缺少结束标记当作永远直播，没有把存在结束标记当作全部下载成功，也没有把“本轮没变化”当成未来承诺。若来源之后更新，新增快照 C 与新的观看记录，保留 A、B 而不是覆盖历史。这样你可以明确回答这一时点看到了什么、清单声明了什么，以及还需要在哪一层继续检查，而不把一个状态名扩张成所有播放行为的保证。最后确认练习没有改变远端生产清单。

## 相关教程与资料

[HLS离线边界](<https://allluckly.cn/guides/icouldplay-hls-playlist-offline-boundary/>)、[HLS间断边界](<https://allluckly.cn/guides/icouldplay-hls-discontinuity-segment-boundary-map/>)。

资料核对：2026 年 11 月 11 日，依据 [云映官方 App Store 说明](<https://apps.apple.com/cn/app/id6755653178>)与 [Apple 公开版本查询](<https://itunes.apple.com/lookup?id=6755653178&country=cn>)，当前版本 1.1.1，最低要求 iOS / iPadOS 15.0。1.1.1 的公开更新列出 Kodi、OpenList / AList 与 S3 兼容存储，并改进来源切换及跳转后的字幕显示；本文按这些公开范围与现有播放能力组织任务，具体入口以安装版本为准。自制样本、手工记录与外部文件整理不是应用新增自动功能；未声称已完成真机或私人服务器实测。

