有谁知道我是否可以在应用程序运行时动态更改 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 标准(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).
请注意,原始答案的标准草案(大约 2012 年)略有不同:
服务器不得更改播放列表文件,除非:
将行添加到它(第 6.2.1 节)。
按照出现的顺序从播放列表中删除媒体 URI,以及仅适用于这些媒体 URI 的任何标签(第 6.2.2 节)。
增加 EXT-X-MEDIA-SEQUENCE 标签的值(第 6.2.2 节)。
添加或删除 EXT-X-STREAM-INF 标签或 EXT-XI-FRAME-STREAM-INF 标签(第 6.2.4 节)。请注意,客户端不需要重新加载变体播放列表文件,因此更改它们可能不会立即生效。
将 EXT-X-ENDLIST 标签添加到播放列表(第 6.2.1 节)。
总而言之,协议不支持您的目标。
无论如何,这是毫无意义的,因为片段可能会按顺序相互关联(具有共同的关键帧)。