hls.js 1.5.7-0.canary.10042 → 1.5.8-0.canary.10044
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/hls.js +24 -18
- package/dist/hls.js.map +1 -1
- package/dist/hls.light.js +24 -18
- package/dist/hls.light.js.map +1 -1
- package/dist/hls.light.min.js +1 -1
- package/dist/hls.light.min.js.map +1 -1
- package/dist/hls.light.mjs +24 -18
- package/dist/hls.light.mjs.map +1 -1
- package/dist/hls.min.js +1 -1
- package/dist/hls.min.js.map +1 -1
- package/dist/hls.mjs +24 -18
- package/dist/hls.mjs.map +1 -1
- package/dist/hls.worker.js +1 -1
- package/package.json +1 -1
- package/src/controller/buffer-controller.ts +32 -23
@@ -101,7 +101,10 @@ export default class BufferController extends Logger implements ComponentAPI {
|
|
101
101
|
super('buffer-controller', hls.logger);
|
102
102
|
this.hls = hls;
|
103
103
|
this.fragmentTracker = fragmentTracker;
|
104
|
-
this.appendSource =
|
104
|
+
this.appendSource =
|
105
|
+
hls.config.preferManagedMediaSource &&
|
106
|
+
typeof self !== 'undefined' &&
|
107
|
+
(self as any).ManagedMediaSource;
|
105
108
|
this._initSourceBuffer();
|
106
109
|
this.registerListeners();
|
107
110
|
}
|
@@ -211,8 +214,10 @@ export default class BufferController extends Logger implements ComponentAPI {
|
|
211
214
|
ms.addEventListener('sourceopen', this._onMediaSourceOpen);
|
212
215
|
ms.addEventListener('sourceended', this._onMediaSourceEnded);
|
213
216
|
ms.addEventListener('sourceclose', this._onMediaSourceClose);
|
214
|
-
|
215
|
-
|
217
|
+
if (this.appendSource) {
|
218
|
+
ms.addEventListener('startstreaming', this._onStartStreaming);
|
219
|
+
ms.addEventListener('endstreaming', this._onEndStreaming);
|
220
|
+
}
|
216
221
|
|
217
222
|
// cache the locally generated object url
|
218
223
|
const objectUrl = (this._objectUrl = self.URL.createObjectURL(ms));
|
@@ -271,8 +276,13 @@ export default class BufferController extends Logger implements ComponentAPI {
|
|
271
276
|
mediaSource.removeEventListener('sourceopen', this._onMediaSourceOpen);
|
272
277
|
mediaSource.removeEventListener('sourceended', this._onMediaSourceEnded);
|
273
278
|
mediaSource.removeEventListener('sourceclose', this._onMediaSourceClose);
|
274
|
-
|
275
|
-
|
279
|
+
if (this.appendSource) {
|
280
|
+
mediaSource.removeEventListener(
|
281
|
+
'startstreaming',
|
282
|
+
this._onStartStreaming,
|
283
|
+
);
|
284
|
+
mediaSource.removeEventListener('endstreaming', this._onEndStreaming);
|
285
|
+
}
|
276
286
|
|
277
287
|
// Detach properly the MediaSource from the HTMLMediaElement as
|
278
288
|
// suggested in https://github.com/w3c/media-source/issues/53.
|
@@ -363,7 +373,7 @@ export default class BufferController extends Logger implements ComponentAPI {
|
|
363
373
|
if (trackName.slice(0, 5) === 'audio') {
|
364
374
|
trackCodec = getCodecCompatibleName(
|
365
375
|
trackCodec,
|
366
|
-
this.
|
376
|
+
this.appendSource,
|
367
377
|
);
|
368
378
|
}
|
369
379
|
const mimeType = `${container};codecs=${trackCodec}`;
|
@@ -1049,10 +1059,7 @@ export default class BufferController extends Logger implements ComponentAPI {
|
|
1049
1059
|
let codec = track.levelCodec || track.codec;
|
1050
1060
|
if (codec) {
|
1051
1061
|
if (trackName.slice(0, 5) === 'audio') {
|
1052
|
-
codec = getCodecCompatibleName(
|
1053
|
-
codec,
|
1054
|
-
this.hls.config.preferManagedMediaSource,
|
1055
|
-
);
|
1062
|
+
codec = getCodecCompatibleName(codec, this.appendSource);
|
1056
1063
|
}
|
1057
1064
|
}
|
1058
1065
|
const mimeType = `${track.container};codecs=${codec}`;
|
@@ -1065,19 +1072,21 @@ export default class BufferController extends Logger implements ComponentAPI {
|
|
1065
1072
|
this.addBufferListener(sbName, 'updateend', this._onSBUpdateEnd);
|
1066
1073
|
this.addBufferListener(sbName, 'error', this._onSBUpdateError);
|
1067
1074
|
// ManagedSourceBuffer bufferedchange event
|
1068
|
-
this.
|
1069
|
-
|
1070
|
-
|
1071
|
-
|
1072
|
-
|
1073
|
-
|
1074
|
-
|
1075
|
-
|
1076
|
-
|
1077
|
-
|
1078
|
-
|
1079
|
-
|
1080
|
-
|
1075
|
+
if (this.appendSource) {
|
1076
|
+
this.addBufferListener(
|
1077
|
+
sbName,
|
1078
|
+
'bufferedchange',
|
1079
|
+
(type: SourceBufferName, event: BufferedChangeEvent) => {
|
1080
|
+
// If media was ejected check for a change. Added ranges are redundant with changes on 'updateend' event.
|
1081
|
+
const removedRanges = event.removedRanges;
|
1082
|
+
if (removedRanges?.length) {
|
1083
|
+
this.hls.trigger(Events.BUFFER_FLUSHED, {
|
1084
|
+
type: trackName as SourceBufferName,
|
1085
|
+
});
|
1086
|
+
}
|
1087
|
+
},
|
1088
|
+
);
|
1089
|
+
}
|
1081
1090
|
|
1082
1091
|
this.tracks[trackName] = {
|
1083
1092
|
buffer: sb,
|