@give-tech/ec-player 0.0.1-beta.11 → 0.0.1-beta.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +25 -10
- package/dist/index.js.map +1 -1
- package/dist/player/HLSPlayer.d.ts +2 -0
- package/dist/player/HLSPlayer.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1552,6 +1552,8 @@ class HLSPlayer extends BasePlayer {
|
|
|
1552
1552
|
this._sampleQueue = [];
|
|
1553
1553
|
this.prefetcher = null;
|
|
1554
1554
|
this.lastRenderTime = 0;
|
|
1555
|
+
this.playStartTime = 0;
|
|
1556
|
+
this.firstFramePts = null;
|
|
1555
1557
|
this.renderLoop = (timestamp = 0) => {
|
|
1556
1558
|
if (!this.isPlaying) return;
|
|
1557
1559
|
const downloaded = this.isFMP4 ? this.sampleQueue.length : this.nalQueue.length;
|
|
@@ -1565,17 +1567,24 @@ class HLSPlayer extends BasePlayer {
|
|
|
1565
1567
|
totalSegments
|
|
1566
1568
|
});
|
|
1567
1569
|
if (this.frameBuffer.length > 0 && this.renderer) {
|
|
1568
|
-
const frame = this.frameBuffer
|
|
1569
|
-
this.
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1570
|
+
const frame = this.frameBuffer[0];
|
|
1571
|
+
if (this.playStartTime === 0 || this.firstFramePts === null) {
|
|
1572
|
+
this.playStartTime = performance.now();
|
|
1573
|
+
this.firstFramePts = frame.pts ?? 0;
|
|
1574
|
+
}
|
|
1575
|
+
const elapsedMs = performance.now() - this.playStartTime;
|
|
1576
|
+
const timescale = this.fmp4Demuxer.getTimescale();
|
|
1577
|
+
const currentTargetPts = this.firstFramePts + elapsedMs * timescale / 1e3;
|
|
1578
|
+
const framePts = frame.pts ?? 0;
|
|
1579
|
+
if (framePts <= currentTargetPts) {
|
|
1580
|
+
this.frameBuffer.shift();
|
|
1581
|
+
this.renderer.render(frame);
|
|
1582
|
+
this.setCurrentTime(framePts / timescale);
|
|
1583
|
+
this.updateState({ resolution: `${frame.width}x${frame.height}` });
|
|
1584
|
+
const fps = this.renderer.updateFps();
|
|
1585
|
+
this.updateState({ fps });
|
|
1586
|
+
this.callbacks.onFrameRender?.(frame);
|
|
1573
1587
|
}
|
|
1574
|
-
this.lastRenderTime = timestamp;
|
|
1575
|
-
this.updateState({ resolution: `${frame.width}x${frame.height}` });
|
|
1576
|
-
const fps = this.renderer.updateFps();
|
|
1577
|
-
this.updateState({ fps });
|
|
1578
|
-
this.callbacks.onFrameRender?.(frame);
|
|
1579
1588
|
} else {
|
|
1580
1589
|
this.lastRenderTime = 0;
|
|
1581
1590
|
}
|
|
@@ -1655,6 +1664,8 @@ class HLSPlayer extends BasePlayer {
|
|
|
1655
1664
|
this.isPlaying = true;
|
|
1656
1665
|
this.decodeLoopAbort = false;
|
|
1657
1666
|
this.lastRenderTime = 0;
|
|
1667
|
+
this.playStartTime = 0;
|
|
1668
|
+
this.firstFramePts = null;
|
|
1658
1669
|
this.updateState({ isPlaying: true });
|
|
1659
1670
|
if (!this.prefetcher) {
|
|
1660
1671
|
this.initPrefetcher();
|
|
@@ -2200,6 +2211,10 @@ class HLSPlayer extends BasePlayer {
|
|
|
2200
2211
|
data: annexBData,
|
|
2201
2212
|
size: annexBData.length
|
|
2202
2213
|
});
|
|
2214
|
+
if (frame) {
|
|
2215
|
+
frame.pts = sample.pts;
|
|
2216
|
+
frame.dts = sample.dts;
|
|
2217
|
+
}
|
|
2203
2218
|
return frame;
|
|
2204
2219
|
}
|
|
2205
2220
|
/**
|