在运行时动态更改m3u8文件(iOS)

orr*_*rko 5 http-live-streaming ios

有谁知道我是否可以在应用程序运行期间动态更改m3u8文件?

场景如下:假设我有多个.ts文件准备按序列播放,例如1.ts,2.ts,3.ts等...

现在,在运行时,我想将订单更改为1.ts,3.ts,然后才2.ts.

这可能吗?

谢谢,

Dan*_*uke 10

答案是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).
Run Code Online (Sandbox Code Playgroud)

请注意,原始答案的标准草案(大约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节).

总而言之,协议不支持您的目标.

无论如何,它是相当无意义的,因为段可以按顺序相互关联(具有共同的关键帧).

  • @Daniel Bauke 这是您的(正确)答案的更新。我的目的只是提供更新的指针。结果看起来像是一个新答案,但事实并非如此!顺便说一句,谢谢您的原始答案。 (2认同)