Skip to content

如果buffer中出现多个孤岛后,会导致短期内频繁的拉取后面数据 #1906

@Lqy4045

Description

@Lqy4045

您使用的西瓜播放器版本是多少? What version of xgplayer are you using?

3.0.24
您使用的操作系统和浏览器分别是? What OS and browser are you using?
操作系统 macOS 15.7.4
浏览器 chrome 147.0.7727.102

如何复现问题? How to reproduce the problem?
由于播放地址无法公开,只能举个例子
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:25
#EXTINF:0.000,
1777336201688.ts
#EXT-X-DISCONTINUITY
#EXTINF:9.212,
1777336201859.ts
#EXTINF:0.000,
1777336206079.ts
#EXT-X-DISCONTINUITY
#EXTINF:9.213,
1777336206118.ts
#EXTINF:0.000,
1777336214075.ts
#EXT-X-DISCONTINUITY
#EXTINF:9.214,
1777336214115.ts
#EXTINF:0.000,
1777336222075.ts
#EXT-X-DISCONTINUITY
#EXTINF:9.215,
1777336222115.ts
#EXTINF:0.000,
1777336230074.ts
#EXT-X-DISCONTINUITY
#EXTINF:9.215,
1777336230111.ts
#EXTINF:0.000,
1777336238074.ts
#EXT-X-DISCONTINUITY
#EXTINF:9.216,
1777336238111.ts
#EXTINF:0.000,
1777336246080.ts
#EXT-X-DISCONTINUITY
#EXTINF:9.217,
1777336246121.ts
#EXTINF:0.000,
1777336254072.ts
#EXT-X-DISCONTINUITY
#EXTINF:9.219,
1777336254110.ts?
#EXT-X-ENDLIST

现象
点播中video.buffered 多块孤岛、preloadTime采用默认值,仍持续按清单顺序往后加载,网络压力很大。

实际行为
Network:在未播放很远时已缓冲大量后续孤岛,_loadSegment 仍不停触发。
调试:Buffer.info(...).remaining 偏小,但总 buffered 区间之和已经很长。

期望行为
在「多块 discontinuity 缓冲」场景下,预加载停止条件可更符合「已囤积足够后续媒体时长」,避免无节制往后扫清单(或可配置)。
点播停止预加载:仅用 bInfo.remaining(当前 playback 所在单一连续 buffered 的末端);多块孤岛时 remaining 长期小于 preloadTime → 一直加载。(相关:xgplayer-streaming-shared Buffer.info、hls/index.js _loadSegment)

可能的改进方向(建议
点播预加载:可选地用 currentTime 之后所有 buffered 区间并集长度(或增加配置项)参与「是否达到 preloadTime」判断。

Metadata

Metadata

Assignees

No one assigned

    Labels

    hlsxgplayer-hls

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions