我有2个.m3u8文件用于VOD流传输(来自外部链接的.ts),我想将两者合并但要模拟实时流传输。
这些是我的服务器在两个不同的调用(两个不同的时间)中生成的2个.m3u8文件。我的问题是第二个#EXT-X-MEDIA-SEQUENCE:5
应该是4。
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:3
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:7
#EXTINF:6,
https://.../5ZzHEGriq_medium_00001.ts
#EXTINF:6,
https://.../5ZzHEGriq_medium_00002.ts
#EXTINF:6,
https://.../5ZzHEGriq_medium_00003.ts
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:5
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:7
#EXTINF:6,
https://.../5ZzHEGriq_medium_00002.ts
#EXTINF:6,
https://.../5ZzHEGriq_medium_00003.ts
#EXTINF:6,
https://.../5ZzHEGriq_medium_00004.ts
我在服务器端使用计时器来确定应该返回的最后一个片段是什么。问题是,客户有时会提早执行请求(在这种情况下,先将先知1-2-3更改为2-3-4或3-4-5),然后又是其他时间(1-2-3至5-6-7)例如)。
我认为更好的选择是跟踪当前序列为1-2-3,并在下一次更改3-4-5时返回,但是如何在没有客户端信息的情况下进行操作。
我正在使用此功能来检查当前的.ts
f(elapsedTime) {
return fragments.findIndex(fragment => (fragment.offset + fragment.duration >= elapsedTime));
}
其中elapsedTime来自全局计时器,fragments
是具有.ts文件信息的对象。
我怎么说,问题是浏览器提早或晚执行请求时。我只设置了EXT-X-MEDIA-SEQUENCE = EXT-X-MEDIA-SEQUENCE + 2
(因为我总是返回3个.ts文件列表)。