【发布时间】:2011-05-15 11:09:36
【问题描述】:
有谁知道我是否可以在应用程序运行期间动态更改 m3u8 文件?
场景如下: 假设我有多个 .ts 文件可以按顺序播放,例如 1.ts 、 2.ts 、 3.ts 等...
现在在运行时,我想将顺序更改为 1.ts、3.ts,然后再更改为 2.ts。
这可能吗?
谢谢,
【问题讨论】:
有谁知道我是否可以在应用程序运行期间动态更改 m3u8 文件?
场景如下: 假设我有多个 .ts 文件可以按顺序播放,例如 1.ts 、 2.ts 、 3.ts 等...
现在在运行时,我想将顺序更改为 1.ts、3.ts,然后再更改为 2.ts。
这可能吗?
谢谢,
【问题讨论】:
答案在HLS standard(2017 年 8 月):
服务器不得更改媒体播放列表文件,除非:
o Append lines to it (Section 6.2.1). o Remove Media Segment URIs from the Playlist in the order that they appear, along with any tags that apply only to those segments (Section 6.2.2). o Increment the value of the EXT-X-MEDIA-SEQUENCE or EXT-X- DISCONTINUITY-SEQUENCE tags (Section 6.2.2). o Add an EXT-X-ENDLIST tag to the Playlist (Section 6.2.1).
请注意,原始答案中的 standard draft(大约 2012 年)略有不同:
服务器不得更改播放列表文件,除非:
向其添加行(第 6.2.1 节)。
按出现的顺序从播放列表中删除媒体 URI, 以及仅适用于这些媒体 URI 的任何标签 (第 6.2.2 节)。
增加 EXT-X-MEDIA-SEQUENCE 标签的值 (第 6.2.2 节)。
添加或删除 EXT-X-STREAM-INF 标记或 EXT-X-I-FRAME-STREAM-INF 标签(第 6.2.4 节)。请注意,客户不需要 重新加载变体播放列表文件,因此更改它们可能没有 立即生效。
将 EXT-X-ENDLIST 标签添加到播放列表(第 6.2.1 节)。
总而言之,协议不支持你的目标。
无论如何,这是毫无意义的,因为片段之间可能会按顺序相互关联(具有共同的关键帧)。
【讨论】: