· 6 years ago · Dec 23, 2019, 03:10 PM
1<iframe src="//wstream.to/embed/yu3w26c9imgo814" width="100%" height="100%" scrolling="no" frameborder="0" allowfullscreen="true"></iframe>
2
3<video data-html5-video="" muted="true" preload="metadata" src="blob:https://wstream.to/7be1458a-3dcf-4854-a1f4-7acebb017cae"></video>
4
5
6https://ul.cdn946.net:8443/hls/yu3w26c9imgo814.m3u8?s=MeGFJIWG06WdrEbkVaMPdw&e=1577134553
7
8#EXTM3U
9#EXT-X-VERSION:3
10#EXT-X-MEDIA-SEQUENCE:4931
11#EXT-X-TARGETDURATION:10
12#EXTINF:1.800,
13yu3w26c9imgo814-1042691400.ts
14#EXTINF:4.166,
15yu3w26c9imgo814-1042853400.ts
16#EXTINF:3.367,
17
18
19https://ul.cdn946.net:8443/hls/yu3w26c9imgo814-1051478370.ts
20
21fange ale gleich an also evl echter header evl nicht gecrypted?
22
23blob:https://wstream.to/7be1458a-3dcf-4854-a1f4-7acebb017cae
24
25
26
27new((function l(r) {
28 var i = {};
29
30 function n(t) {
31 if (i[t]) return i[t].exports;
32 var e = i[t] = {
33 i: t,
34 l: !1,
35 exports: {}
36 };
37 return r[t].call(e.exports, e, e.exports, n), e.l = !0, e.exports
38 }
39 n.m = r, n.c = i, n.i = function(t) {
40 return t
41 }, n.d = function(t, e, r) {
42 n.o(t, e) || Object.defineProperty(t, e, {
43 configurable: !1,
44 enumerable: !0,
45 get: r
46 })
47 }, n.r = function(t) {
48 Object.defineProperty(t, "__esModule", {
49 value: !0
50 })
51 }, n.n = function(t) {
52 var e = t && t.__esModule ? function() {
53 return t.default
54 } : function() {
55 return t
56 };
57 return n.d(e, "a", e), e
58 }, n.o = function(t, e) {
59 return Object.prototype.hasOwnProperty.call(t, e)
60 }, n.p = "/", n.oe = function(t) {
61 throw console.error(t), t
62 };
63 var t = n(n.s = "./src/demux/demuxer-worker.js");
64 return t.default || t
65})({
66 "./src/demux/demuxer-worker.js": function(t, e, r) {
67 "use strict";
68 Object.defineProperty(e, "__esModule", {
69 value: !0
70 });
71 var o = r("./src/demux/demuxer-inline.js"),
72 s = r("./src/events.js"),
73 l = r("./src/utils/logger.js"),
74 u = r("./node_modules/node-libs-browser/node_modules/events/events.js");
75 e.default = function(n) {
76 var i = new u.EventEmitter;
77 i.trigger = function(t) {
78 for (var e = [], r = 1; r < arguments.length; r++) e[r - 1] = arguments[r];
79 i.emit.apply(i, [t, t].concat(e))
80 }, i.off = function(t) {
81 for (var e = [], r = 1; r < arguments.length; r++) e[r - 1] = arguments[r];
82 i.removeListener.apply(i, [t].concat(e))
83 };
84
85 function a(t, e) {
86 n.postMessage({
87 event: t,
88 data: e
89 })
90 }
91 n.addEventListener("message", function(t) {
92 var e = t.data;
93 switch (e.cmd) {
94 case "init":
95 var r = JSON.parse(e.config);
96 n.demuxer = new o.default(i, e.typeSupported, r, e.vendor), l.enableLogs(r.debug), a("init", null);
97 break;
98 case "demux":
99 n.demuxer.push(e.data, e.decryptdata, e.initSegment, e.audioCodec, e.videoCodec, e.timeOffset, e.discontinuity, e.trackSwitch, e.contiguous, e.duration, e.accurateTimeOffset, e.defaultInitPTS)
100 }
101 }), i.on(s.default.FRAG_DECRYPTED, a), i.on(s.default.FRAG_PARSING_INIT_SEGMENT, a), i.on(s.default.FRAG_PARSED, a), i.on(s.default.ERROR, a), i.on(s.default.FRAG_PARSING_METADATA, a), i.on(s.default.FRAG_PARSING_USERDATA, a), i.on(s.default.INIT_PTS_FOUND, a), i.on(s.default.FRAG_PARSING_DATA, function(t, e) {
102 var r = [],
103 i = {
104 event: t,
105 data: e
106 };
107 e.data1 && (i.data1 = e.data1.buffer, r.push(e.data1.buffer), delete e.data1), e.data2 && (i.data2 = e.data2.buffer, r.push(e.data2.buffer), delete e.data2), n.postMessage(i, r)
108 })
109 }
110 },
111 "./node_modules/node-libs-browser/node_modules/events/events.js": function(t, e) {
112 function i() {
113 this._events = this._events || {}, this._maxListeners = this._maxListeners || void 0
114 }
115
116 function l(t) {
117 return "function" == typeof t
118 }
119
120 function u(t) {
121 return "object" == typeof t && null !== t
122 }
123
124 function d(t) {
125 return void 0 === t
126 }((t.exports = i).EventEmitter = i).prototype._events = void 0, i.prototype._maxListeners = void 0, i.defaultMaxListeners = 10, i.prototype.setMaxListeners = function(t) {
127 if (! function(t) {
128 return "number" == typeof t
129 }(t) || t < 0 || isNaN(t)) throw TypeError("n must be a positive number");
130 return this._maxListeners = t, this
131 }, i.prototype.emit = function(t) {
132 var e, r, i, n, a, o;
133 if (this._events || (this._events = {}), "error" === t && (!this._events.error || u(this._events.error) && !this._events.error.length)) {
134 if ((e = arguments[1]) instanceof Error) throw e;
135 var s = new Error('Uncaught, unspecified "error" event. (' + e + ")");
136 throw s.context = e, s
137 }
138 if (d(r = this._events[t])) return !1;
139 if (l(r)) switch (arguments.length) {
140 case 1:
141 r.call(this);
142 break;
143 case 2:
144 r.call(this, arguments[1]);
145 break;
146 case 3:
147 r.call(this, arguments[1], arguments[2]);
148 break;
149 default:
150 n = Array.prototype.slice.call(arguments, 1), r.apply(this, n)
151 } else if (u(r))
152 for (n = Array.prototype.slice.call(arguments, 1), i = (o = r.slice()).length, a = 0; a < i; a++) o[a].apply(this, n);
153 return !0
154 }, i.prototype.on = i.prototype.addListener = function(t, e) {
155 var r;
156 if (!l(e)) throw TypeError("listener must be a function");
157 return this._events || (this._events = {}), this._events.newListener && this.emit("newListener", t, l(e.listener) ? e.listener : e), this._events[t] ? u(this._events[t]) ? this._events[t].push(e) : this._events[t] = [this._events[t], e] : this._events[t] = e, u(this._events[t]) && !this._events[t].warned && (r = d(this._maxListeners) ? i.defaultMaxListeners : this._maxListeners) && 0 < r && this._events[t].length > r && (this._events[t].warned = !0, console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.", this._events[t].length), "function" == typeof console.trace && console.trace()), this
158 }, i.prototype.once = function(t, e) {
159 if (!l(e)) throw TypeError("listener must be a function");
160 var r = !1;
161
162 function i() {
163 this.removeListener(t, i), r || (r = !0, e.apply(this, arguments))
164 }
165 return i.listener = e, this.on(t, i), this
166 }, i.prototype.removeListener = function(t, e) {
167 var r, i, n, a;
168 if (!l(e)) throw TypeError("listener must be a function");
169 if (!this._events || !this._events[t]) return this;
170 if (n = (r = this._events[t]).length, i = -1, r === e || l(r.listener) && r.listener === e) delete this._events[t], this._events.removeListener && this.emit("removeListener", t, e);
171 else if (u(r)) {
172 for (a = n; 0 < a--;)
173 if (r[a] === e || r[a].listener && r[a].listener === e) {
174 i = a;
175 break
176 } if (i < 0) return this;
177 1 === r.length ? (r.length = 0, delete this._events[t]) : r.splice(i, 1), this._events.removeListener && this.emit("removeListener", t, e)
178 }
179 return this
180 }, i.prototype.removeAllListeners = function(t) {
181 var e, r;
182 if (!this._events) return this;
183 if (!this._events.removeListener) return 0 === arguments.length ? this._events = {} : this._events[t] && delete this._events[t], this;
184 if (0 === arguments.length) {
185 for (e in this._events) "removeListener" !== e && this.removeAllListeners(e);
186 return this.removeAllListeners("removeListener"), this._events = {}, this
187 }
188 if (l(r = this._events[t])) this.removeListener(t, r);
189 else if (r)
190 for (; r.length;) this.removeListener(t, r[r.length - 1]);
191 return delete this._events[t], this
192 }, i.prototype.listeners = function(t) {
193 return this._events && this._events[t] ? l(this._events[t]) ? [this._events[t]] : this._events[t].slice() : []
194 }, i.prototype.listenerCount = function(t) {
195 if (this._events) {
196 var e = this._events[t];
197 if (l(e)) return 1;
198 if (e) return e.length
199 }
200 return 0
201 }, i.listenerCount = function(t, e) {
202 return t.listenerCount(e)
203 }
204 },
205 "./src/utils/logger.js": function(t, e, r) {
206 "use strict";
207 Object.defineProperty(e, "__esModule", {
208 value: !0
209 });
210 var i = r("./src/utils/get-self-scope.js");
211
212 function n() {}
213 var a = {
214 trace: n,
215 debug: n,
216 log: n,
217 warn: n,
218 info: n,
219 error: n
220 },
221 o = a;
222 var s = i.getSelfScope();
223
224 function l(e) {
225 for (var t = [], r = 1; r < arguments.length; r++) t[r - 1] = arguments[r];
226 t.forEach(function(t) {
227 o[t] = e[t] ? e[t].bind(e) : function(r) {
228 var i = s.console[r];
229 return i ? function() {
230 for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
231 t[0] && (t[0] = function(t, e) {
232 return e = "[" + t + "] > " + e
233 }(r, t[0])), i.apply(s.console, t)
234 } : n
235 }(t)
236 })
237 }
238 e.enableLogs = function(t) {
239 if (!0 === t || "object" == typeof t) {
240 l(t, "debug", "log", "info", "warn", "error");
241 try {
242 o.log()
243 } catch (t) {
244 o = a
245 }
246 } else o = a
247 }, e.logger = o
248 },
249 "./src/utils/get-self-scope.js": function(t, e, r) {
250 "use strict";
251 Object.defineProperty(e, "__esModule", {
252 value: !0
253 }), e.getSelfScope = function() {
254 return "undefined" == typeof window ? self : window
255 }
256 },
257 "./src/events.js": function(t, e, r) {
258 "use strict";
259 Object.defineProperty(e, "__esModule", {
260 value: !0
261 });
262 e.default = {
263 MEDIA_ATTACHING: "hlsMediaAttaching",
264 MEDIA_ATTACHED: "hlsMediaAttached",
265 MEDIA_DETACHING: "hlsMediaDetaching",
266 MEDIA_DETACHED: "hlsMediaDetached",
267 BUFFER_RESET: "hlsBufferReset",
268 BUFFER_CODECS: "hlsBufferCodecs",
269 BUFFER_CREATED: "hlsBufferCreated",
270 BUFFER_APPENDING: "hlsBufferAppending",
271 BUFFER_APPENDED: "hlsBufferAppended",
272 BUFFER_EOS: "hlsBufferEos",
273 BUFFER_FLUSHING: "hlsBufferFlushing",
274 BUFFER_FLUSHED: "hlsBufferFlushed",
275 MANIFEST_LOADING: "hlsManifestLoading",
276 MANIFEST_LOADED: "hlsManifestLoaded",
277 MANIFEST_PARSED: "hlsManifestParsed",
278 LEVEL_SWITCHING: "hlsLevelSwitching",
279 LEVEL_SWITCHED: "hlsLevelSwitched",
280 LEVEL_LOADING: "hlsLevelLoading",
281 LEVEL_LOADED: "hlsLevelLoaded",
282 LEVEL_UPDATED: "hlsLevelUpdated",
283 LEVEL_PTS_UPDATED: "hlsLevelPtsUpdated",
284 AUDIO_TRACKS_UPDATED: "hlsAudioTracksUpdated",
285 AUDIO_TRACK_SWITCHING: "hlsAudioTrackSwitching",
286 AUDIO_TRACK_SWITCHED: "hlsAudioTrackSwitched",
287 AUDIO_TRACK_LOADING: "hlsAudioTrackLoading",
288 AUDIO_TRACK_LOADED: "hlsAudioTrackLoaded",
289 SUBTITLE_TRACKS_UPDATED: "hlsSubtitleTracksUpdated",
290 SUBTITLE_TRACK_SWITCH: "hlsSubtitleTrackSwitch",
291 SUBTITLE_TRACK_LOADING: "hlsSubtitleTrackLoading",
292 SUBTITLE_TRACK_LOADED: "hlsSubtitleTrackLoaded",
293 SUBTITLE_FRAG_PROCESSED: "hlsSubtitleFragProcessed",
294 INIT_PTS_FOUND: "hlsInitPtsFound",
295 FRAG_LOADING: "hlsFragLoading",
296 FRAG_LOAD_PROGRESS: "hlsFragLoadProgress",
297 FRAG_LOAD_EMERGENCY_ABORTED: "hlsFragLoadEmergencyAborted",
298 FRAG_LOADED: "hlsFragLoaded",
299 FRAG_DECRYPTED: "hlsFragDecrypted",
300 FRAG_PARSING_INIT_SEGMENT: "hlsFragParsingInitSegment",
301 FRAG_PARSING_USERDATA: "hlsFragParsingUserdata",
302 FRAG_PARSING_METADATA: "hlsFragParsingMetadata",
303 FRAG_PARSING_DATA: "hlsFragParsingData",
304 FRAG_PARSED: "hlsFragParsed",
305 FRAG_BUFFERED: "hlsFragBuffered",
306 FRAG_CHANGED: "hlsFragChanged",
307 FPS_DROP: "hlsFpsDrop",
308 FPS_DROP_LEVEL_CAPPING: "hlsFpsDropLevelCapping",
309 ERROR: "hlsError",
310 DESTROYING: "hlsDestroying",
311 KEY_LOADING: "hlsKeyLoading",
312 KEY_LOADED: "hlsKeyLoaded",
313 STREAM_STATE_TRANSITION: "hlsStreamStateTransition"
314 }
315 },
316 "./src/demux/demuxer-inline.js": function(t, e, r) {
317 "use strict";
318 Object.defineProperty(e, "__esModule", {
319 value: !0
320 });
321 var g, T = r("./src/events.js"),
322 S = r("./src/errors.js"),
323 m = r("./src/crypt/decrypter.js"),
324 k = r("./src/demux/aacdemuxer.js"),
325 L = r("./src/demux/mp4demuxer.js"),
326 R = r("./src/demux/tsdemuxer.js"),
327 C = r("./src/demux/mp3demuxer.js"),
328 w = r("./src/remux/mp4-remuxer.js"),
329 P = r("./src/remux/passthrough-remuxer.js"),
330 i = r("./src/utils/get-self-scope.js"),
331 n = r("./src/utils/logger.js"),
332 a = i.getSelfScope();
333 try {
334 g = a.performance.now.bind(a.performance)
335 } catch (t) {
336 n.logger.debug("Unable to use Performance API on this environment"), g = a.Date.now
337 }
338 var o = (s.prototype.destroy = function() {
339 var t = this.demuxer;
340 t && t.destroy()
341 }, s.prototype.push = function(t, r, i, n, a, o, s, l, u, d, c, f) {
342 var h = this;
343 if (0 < t.byteLength && null != r && null != r.key && "AES-128" === r.method) {
344 var e = this.decrypter;
345 null == e && (e = this.decrypter = new m.default(this.observer, this.config));
346 var p = g();
347 e.decrypt(t, r.key.buffer, r.iv.buffer, function(t) {
348 var e = g();
349 h.observer.trigger(T.default.FRAG_DECRYPTED, {
350 stats: {
351 tstart: p,
352 tdecrypt: e
353 }
354 }), h.pushDecrypted(new Uint8Array(t), r, new Uint8Array(i), n, a, o, s, l, u, d, c, f)
355 })
356 } else this.pushDecrypted(new Uint8Array(t), r, new Uint8Array(i), n, a, o, s, l, u, d, c, f)
357 }, s.prototype.pushDecrypted = function(t, e, r, i, n, a, o, s, l, u, d, c) {
358 var f = this.demuxer;
359 if (!f || (o || s) && !this.probe(t)) {
360 for (var h = this.observer, p = this.typeSupported, g = this.config, m = [{
361 demux: R.default,
362 remux: w.default
363 }, {
364 demux: L.default,
365 remux: P.default
366 }, {
367 demux: k.default,
368 remux: w.default
369 }, {
370 demux: C.default,
371 remux: w.default
372 }], y = 0, v = m.length; y < v; y++) {
373 var A = m[y],
374 _ = A.demux.probe;
375 if (_(t)) {
376 var b = this.remuxer = new A.remux(h, g, p, this.vendor);
377 f = new A.demux(h, b, g, p), this.probe = _;
378 break
379 }
380 }
381 if (!f) return void h.trigger(T.default.ERROR, {
382 type: S.ErrorTypes.MEDIA_ERROR,
383 details: S.ErrorDetails.FRAG_PARSING_ERROR,
384 fatal: !0,
385 reason: "no demux matching with content found"
386 });
387 this.demuxer = f
388 }
389 var E = this.remuxer;
390 (o || s) && (f.resetInitSegment(r, i, n, u), E.resetInitSegment()), o && (f.resetTimeStamp(c), E.resetTimeStamp(c)), "function" == typeof f.setDecryptData && f.setDecryptData(e), f.append(t, a, l, d)
391 }, s);
392
393 function s(t, e, r, i) {
394 this.observer = t, this.typeSupported = e, this.config = r, this.vendor = i
395 }
396 e.default = o
397 },
398 "./src/remux/passthrough-remuxer.js": function(t, e, r) {
399 "use strict";
400 Object.defineProperty(e, "__esModule", {
401 value: !0
402 });
403 var d = r("./src/events.js"),
404 i = (n.prototype.destroy = function() {}, n.prototype.resetTimeStamp = function() {}, n.prototype.resetInitSegment = function() {}, n.prototype.remux = function(t, e, r, i, n, a, o, s) {
405 var l = this.observer,
406 u = "";
407 t && (u += "audio"), e && (u += "video"), l.trigger(d.default.FRAG_PARSING_DATA, {
408 data1: s,
409 startPTS: n,
410 startDTS: n,
411 type: u,
412 hasAudio: !!t,
413 hasVideo: !!e,
414 nb: 1,
415 dropped: 0
416 }), l.trigger(d.default.FRAG_PARSED)
417 }, n);
418
419 function n(t) {
420 this.observer = t
421 }
422 e.default = i
423 },
424 "./src/remux/mp4-remuxer.js": function(t, e, r) {
425 "use strict";
426 Object.defineProperty(e, "__esModule", {
427 value: !0
428 });
429 var V = r("./src/remux/aac-helper.js"),
430 q = r("./src/remux/mp4-generator.js"),
431 X = r("./src/events.js"),
432 Z = r("./src/errors.js"),
433 Q = r("./src/utils/logger.js"),
434 i = (n.prototype.destroy = function() {}, n.prototype.resetTimeStamp = function(t) {
435 this._initPTS = this._initDTS = t
436 }, n.prototype.resetInitSegment = function() {
437 this.ISGenerated = !1
438 }, n.prototype.remux = function(t, e, r, i, n, a, o) {
439 if (this.ISGenerated || this.generateIS(t, e, n), this.ISGenerated) {
440 var s = t.samples.length,
441 l = e.samples.length,
442 u = n,
443 d = n;
444 if (s && l) {
445 var c = (t.samples[0].pts - e.samples[0].pts) / e.inputTimeScale;
446 u += Math.max(0, c), d += Math.max(0, -c)
447 }
448 if (s) {
449 t.timescale || (Q.logger.warn("regenerate InitSegment as audio detected"), this.generateIS(t, e, n));
450 var f = this.remuxAudio(t, u, a, o);
451 if (l) {
452 var h = void 0;
453 f && (h = f.endPTS - f.startPTS), e.timescale || (Q.logger.warn("regenerate InitSegment as video detected"), this.generateIS(t, e, n)), this.remuxVideo(e, d, a, h, o)
454 }
455 } else if (l) {
456 var p = this.remuxVideo(e, d, a, 0, o);
457 p && t.codec && this.remuxEmptyAudio(t, u, a, p)
458 }
459 }
460 r.samples.length && this.remuxID3(r, n), i.samples.length && this.remuxText(i, n), this.observer.trigger(X.default.FRAG_PARSED)
461 }, n.prototype.generateIS = function(t, e, r) {
462 var i, n, a = this.observer,
463 o = t.samples,
464 s = e.samples,
465 l = this.typeSupported,
466 u = "audio/mp4",
467 d = {},
468 c = {
469 tracks: d
470 },
471 f = void 0 === this._initPTS;
472 if (f && (i = n = 1 / 0), t.config && o.length && (t.timescale = t.samplerate, Q.logger.log("audio sampling rate : " + t.samplerate), t.isAAC || (l.mpeg ? (u = "audio/mpeg", t.codec = "") : l.mp3 && (t.codec = "mp3")), d.audio = {
473 container: u,
474 codec: t.codec,
475 initSegment: !t.isAAC && l.mpeg ? new Uint8Array : q.default.initSegment([t]),
476 metadata: {
477 channelCount: t.channelCount
478 }
479 }, f && (i = n = o[0].pts - t.inputTimeScale * r)), e.sps && e.pps && s.length) {
480 var h = e.inputTimeScale;
481 e.timescale = h, d.video = {
482 container: "video/mp4",
483 codec: e.codec,
484 initSegment: q.default.initSegment([e]),
485 metadata: {
486 width: e.width,
487 height: e.height
488 }
489 }, f && (i = Math.min(i, s[0].pts - h * r), n = Math.min(n, s[0].dts - h * r), this.observer.trigger(X.default.INIT_PTS_FOUND, {
490 initPTS: i
491 }))
492 }
493 Object.keys(d).length ? (a.trigger(X.default.FRAG_PARSING_INIT_SEGMENT, c), this.ISGenerated = !0, f && (this._initPTS = i, this._initDTS = n)) : a.trigger(X.default.ERROR, {
494 type: Z.ErrorTypes.MEDIA_ERROR,
495 details: Z.ErrorDetails.FRAG_PARSING_ERROR,
496 fatal: !1,
497 reason: "no audio/video samples found"
498 })
499 }, n.prototype.remuxVideo = function(t, e, r, i, n) {
500 var a, o, s, l, u, d, c, f = 8,
501 h = t.timescale,
502 p = t.samples,
503 g = [],
504 m = p.length,
505 y = this._PTSNormalize,
506 v = this._initPTS,
507 A = this.nextAvcDts,
508 _ = this.isSafari;
509 if (0 !== m) {
510 _ && (r |= p.length && A && (n && Math.abs(e - A / h) < .1 || Math.abs(p[0].pts - A - v) < h / 5)), r || (A = e * h), p.forEach(function(t) {
511 t.pts = y(t.pts - v, A), t.dts = y(t.dts - v, A)
512 }), p.sort(function(t, e) {
513 var r = t.dts - e.dts,
514 i = t.pts - e.pts;
515 return r || i || t.id - e.id
516 });
517 var b = p.reduce(function(t, e) {
518 return Math.max(Math.min(t, e.pts - e.dts), -18e3)
519 }, 0);
520 if (b < 0) {
521 Q.logger.warn("PTS < DTS detected in video samples, shifting DTS by " + Math.round(b / 90) + " ms to overcome this issue");
522 for (var E = 0; E < p.length; E++) p[E].dts += b
523 }
524 var T = p[0];
525 u = Math.max(T.dts, 0), l = Math.max(T.pts, 0);
526 var S = Math.round((u - A) / 90);
527 r && S && (1 < S ? Q.logger.log("AVC:" + S + " ms hole between fragments detected,filling it") : S < -1 && Q.logger.log("AVC:" + -S + " ms overlapping between fragments detected"), u = A, p[0].dts = u, l = Math.max(l - S, A), p[0].pts = l, Q.logger.log("Video/PTS/DTS adjusted: " + Math.round(l / 90) + "/" + Math.round(u / 90) + ",delta:" + S + " ms")), T = p[p.length - 1], c = Math.max(T.dts, 0), d = Math.max(T.pts, 0, c), _ && (a = Math.round((c - u) / (p.length - 1)));
528 var k = 0,
529 L = 0;
530 for (E = 0; E < m; E++) {
531 for (var R = p[E], C = R.units, w = C.length, P = 0, O = 0; O < w; O++) P += C[O].data.length;
532 L += P, k += w, R.length = P, R.dts = _ ? u + E * a : Math.max(R.dts, u), R.pts = Math.max(R.pts, R.dts)
533 }
534 var I = L + 4 * k + 8;
535 try {
536 o = new Uint8Array(I)
537 } catch (t) {
538 return void this.observer.trigger(X.default.ERROR, {
539 type: Z.ErrorTypes.MUX_ERROR,
540 details: Z.ErrorDetails.REMUX_ALLOC_ERROR,
541 fatal: !1,
542 bytes: I,
543 reason: "fail allocating video mdat " + I
544 })
545 }
546 var D = new DataView(o.buffer);
547 for (D.setUint32(0, I), o.set(q.default.types.mdat, 4), E = 0; E < m; E++) {
548 var x = p[E],
549 M = x.units,
550 N = 0,
551 F = void 0;
552 for (O = 0, w = M.length; O < w; O++) {
553 var B = M[O],
554 U = B.data,
555 j = B.data.byteLength;
556 D.setUint32(f, j), f += 4, o.set(U, f), f += j, N += 4 + j
557 }
558 if (_) F = Math.max(0, a * Math.round((x.pts - x.dts) / a));
559 else {
560 if (E < m - 1) a = p[E + 1].dts - x.dts;
561 else {
562 var G = this.config,
563 K = x.dts - p[0 < E ? E - 1 : E].dts;
564 if (G.stretchShortVideoTrack) {
565 var V = G.maxBufferHole,
566 Y = Math.floor(V * h),
567 H = (i ? l + i * h : this.nextAudioPts) - x.pts;
568 Y < H ? ((a = H - K) < 0 && (a = K), Q.logger.log("It is approximately " + H / 90 + " ms to the next segment; using duration " + a / 90 + " ms for the last video frame.")) : a = K
569 } else a = K
570 }
571 F = Math.round(x.pts - x.dts)
572 }
573 g.push({
574 size: N,
575 duration: a,
576 cts: F,
577 flags: {
578 isLeading: 0,
579 isDependedOn: 0,
580 hasRedundancy: 0,
581 degradPrio: 0,
582 dependsOn: x.key ? 2 : 1,
583 isNonSync: x.key ? 0 : 1
584 }
585 })
586 }
587 this.nextAvcDts = c + a;
588 var $ = t.dropped;
589 if (t.len = 0, t.nbNalu = 0, t.dropped = 0, g.length && -1 < navigator.userAgent.toLowerCase().indexOf("chrome")) {
590 var W = g[0].flags;
591 W.dependsOn = 2, W.isNonSync = 0
592 }
593 t.samples = g, s = q.default.moof(t.sequenceNumber++, u, t), t.samples = [];
594 var z = {
595 data1: s,
596 data2: o,
597 startPTS: l / h,
598 endPTS: (d + a) / h,
599 startDTS: u / h,
600 endDTS: this.nextAvcDts / h,
601 type: "video",
602 hasAudio: !1,
603 hasVideo: !0,
604 nb: g.length,
605 dropped: $
606 };
607 return this.observer.trigger(X.default.FRAG_PARSING_DATA, z), z
608 }
609 }, n.prototype.remuxAudio = function(t, e, r, i) {
610 var n, a, o, s, l, u, d, c = t.inputTimeScale,
611 f = t.timescale,
612 h = c / f,
613 p = (t.isAAC ? 1024 : 1152) * h,
614 g = this._PTSNormalize,
615 m = this._initPTS,
616 y = !t.isAAC && this.typeSupported.mpeg,
617 v = t.samples,
618 A = [],
619 _ = this.nextAudioPts;
620 if (r |= v.length && _ && (i && Math.abs(e - _ / c) < .1 || Math.abs(v[0].pts - _ - m) < 20 * p), v.forEach(function(t) {
621 t.pts = t.dts = g(t.pts - m, e * c)
622 }), 0 !== (v = v.filter(function(t) {
623 return 0 <= t.pts
624 })).length) {
625 if (r || (_ = i ? e * c : v[0].pts), t.isAAC)
626 for (var b = this.config.maxAudioFramesDrift, E = 0, T = _; E < v.length;) {
627 var S, k = v[E];
628 S = (D = k.pts) - T;
629 var L = Math.abs(1e3 * S / c);
630 if (S <= -b * p) Q.logger.warn("Dropping 1 audio frame @ " + (T / c).toFixed(3) + "s due to " + Math.round(L) + " ms overlap."), v.splice(E, 1), t.len -= k.unit.length;
631 else if (b * p <= S && L < 1e4 && T) {
632 var R = Math.round(S / p);
633 Q.logger.warn("Injecting " + R + " audio frame @ " + (T / c).toFixed(3) + "s due to " + Math.round(1e3 * S / c) + " ms gap.");
634 for (var C = 0; C < R; C++) {
635 var w = Math.max(T, 0);
636 (o = V.default.getSilentFrame(t.manifestCodec || t.codec, t.channelCount)) || (Q.logger.log("Unable to get silent frame for given audio codec; duplicating last frame instead."), o = k.unit.subarray()), v.splice(E, 0, {
637 unit: o,
638 pts: w,
639 dts: w
640 }), t.len += o.length, T += p, E++
641 }
642 k.pts = k.dts = T, T += p, E++
643 } else Math.abs(S), k.pts = k.dts = T, T += p, E++
644 }
645 C = 0;
646 for (var P = v.length; C < P; C++) {
647 var O = v[C],
648 I = O.unit,
649 D = O.pts;
650 if (void 0 !== d) a.duration = Math.round((D - d) / h);
651 else {
652 var x = Math.round(1e3 * (D - _) / c),
653 M = 0;
654 if (r && t.isAAC && x) {
655 if (0 < x && x < 1e4) M = Math.round((D - _) / p), Q.logger.log(x + " ms hole between AAC samples detected,filling it"), 0 < M && ((o = V.default.getSilentFrame(t.manifestCodec || t.codec, t.channelCount)) || (o = I.subarray()), t.len += M * o.length);
656 else if (x < -12) {
657 Q.logger.log("drop overlapping AAC sample, expected/parsed/delta:" + (_ / c).toFixed(3) + "s/" + (D / c).toFixed(3) + "s/" + -x + "ms"), t.len -= I.byteLength;
658 continue
659 }
660 D = _
661 }
662 if (u = D, !(0 < t.len)) return;
663 var N = y ? t.len : t.len + 8;
664 n = y ? 0 : 8;
665 try {
666 s = new Uint8Array(N)
667 } catch (t) {
668 return void this.observer.trigger(X.default.ERROR, {
669 type: Z.ErrorTypes.MUX_ERROR,
670 details: Z.ErrorDetails.REMUX_ALLOC_ERROR,
671 fatal: !1,
672 bytes: N,
673 reason: "fail allocating audio mdat " + N
674 })
675 }
676 for (y || (new DataView(s.buffer).setUint32(0, N), s.set(q.default.types.mdat, 4)), E = 0; E < M; E++)(o = V.default.getSilentFrame(t.manifestCodec || t.codec, t.channelCount)) || (Q.logger.log("Unable to get silent frame for given audio codec; duplicating this frame instead."), o = I.subarray()), s.set(o, n), n += o.byteLength, a = {
677 size: o.byteLength,
678 cts: 0,
679 duration: 1024,
680 flags: {
681 isLeading: 0,
682 isDependedOn: 0,
683 hasRedundancy: 0,
684 degradPrio: 0,
685 dependsOn: 1
686 }
687 }, A.push(a)
688 }
689 s.set(I, n);
690 var F = I.byteLength;
691 n += F, a = {
692 size: F,
693 cts: 0,
694 duration: 0,
695 flags: {
696 isLeading: 0,
697 isDependedOn: 0,
698 hasRedundancy: 0,
699 degradPrio: 0,
700 dependsOn: 1
701 }
702 }, A.push(a), d = D
703 }
704 var B = 0,
705 U = A.length;
706 if (2 <= U && (B = A[U - 2].duration, a.duration = B), U) {
707 this.nextAudioPts = _ = d + h * B, t.len = 0, t.samples = A, l = y ? new Uint8Array : q.default.moof(t.sequenceNumber++, u / h, t), t.samples = [];
708 var j = u / c,
709 G = _ / c,
710 K = {
711 data1: l,
712 data2: s,
713 startPTS: j,
714 endPTS: G,
715 startDTS: j,
716 endDTS: G,
717 type: "audio",
718 hasAudio: !0,
719 hasVideo: !1,
720 nb: U
721 };
722 return this.observer.trigger(X.default.FRAG_PARSING_DATA, K), K
723 }
724 return null
725 }
726 }, n.prototype.remuxEmptyAudio = function(t, e, r, i) {
727 var n = t.inputTimeScale,
728 a = n / (t.samplerate ? t.samplerate : n),
729 o = this.nextAudioPts,
730 s = (void 0 !== o ? o : i.startDTS * n) + this._initDTS,
731 l = i.endDTS * n + this._initDTS,
732 u = 1024 * a,
733 d = Math.ceil((l - s) / u),
734 c = V.default.getSilentFrame(t.manifestCodec || t.codec, t.channelCount);
735 if (Q.logger.warn("remux empty Audio"), c) {
736 for (var f = [], h = 0; h < d; h++) {
737 var p = s + h * u;
738 f.push({
739 unit: c,
740 pts: p,
741 dts: p
742 }), t.len += c.length
743 }
744 t.samples = f, this.remuxAudio(t, e, r)
745 } else Q.logger.trace("Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec!")
746 }, n.prototype.remuxID3 = function(t) {
747 var e, r = t.samples.length,
748 i = t.inputTimeScale,
749 n = this._initPTS,
750 a = this._initDTS;
751 if (r) {
752 for (var o = 0; o < r; o++)(e = t.samples[o]).pts = (e.pts - n) / i, e.dts = (e.dts - a) / i;
753 this.observer.trigger(X.default.FRAG_PARSING_METADATA, {
754 samples: t.samples
755 })
756 }
757 t.samples = []
758 }, n.prototype.remuxText = function(t) {
759 t.samples.sort(function(t, e) {
760 return t.pts - e.pts
761 });
762 var e, r = t.samples.length,
763 i = t.inputTimeScale,
764 n = this._initPTS;
765 if (r) {
766 for (var a = 0; a < r; a++)(e = t.samples[a]).pts = (e.pts - n) / i;
767 this.observer.trigger(X.default.FRAG_PARSING_USERDATA, {
768 samples: t.samples
769 })
770 }
771 t.samples = []
772 }, n.prototype._PTSNormalize = function(t, e) {
773 var r;
774 if (void 0 === e) return t;
775 for (r = e < t ? -8589934592 : 8589934592; 4294967296 < Math.abs(t - e);) t += r;
776 return t
777 }, n);
778
779 function n(t, e, r, i) {
780 this.observer = t, this.config = e, this.typeSupported = r;
781 var n = navigator.userAgent;
782 this.isSafari = i && -1 < i.indexOf("Apple") && n && !n.match("CriOS"), this.ISGenerated = !1
783 }
784 e.default = i
785 },
786 "./src/errors.js": function(t, e, r) {
787 "use strict";
788 Object.defineProperty(e, "__esModule", {
789 value: !0
790 }), e.ErrorTypes = {
791 NETWORK_ERROR: "networkError",
792 MEDIA_ERROR: "mediaError",
793 KEY_SYSTEM_ERROR: "keySystemError",
794 MUX_ERROR: "muxError",
795 OTHER_ERROR: "otherError"
796 }, e.ErrorDetails = {
797 KEY_SYSTEM_NO_KEYS: "keySystemNoKeys",
798 KEY_SYSTEM_NO_ACCESS: "keySystemNoAccess",
799 KEY_SYSTEM_NO_SESSION: "keySystemNoSession",
800 KEY_SYSTEM_LICENSE_REQUEST_FAILED: "keySystemLicenseRequestFailed",
801 MANIFEST_LOAD_ERROR: "manifestLoadError",
802 MANIFEST_LOAD_TIMEOUT: "manifestLoadTimeOut",
803 MANIFEST_PARSING_ERROR: "manifestParsingError",
804 MANIFEST_INCOMPATIBLE_CODECS_ERROR: "manifestIncompatibleCodecsError",
805 LEVEL_LOAD_ERROR: "levelLoadError",
806 LEVEL_LOAD_TIMEOUT: "levelLoadTimeOut",
807 LEVEL_SWITCH_ERROR: "levelSwitchError",
808 AUDIO_TRACK_LOAD_ERROR: "audioTrackLoadError",
809 AUDIO_TRACK_LOAD_TIMEOUT: "audioTrackLoadTimeOut",
810 FRAG_LOAD_ERROR: "fragLoadError",
811 FRAG_LOAD_TIMEOUT: "fragLoadTimeOut",
812 FRAG_DECRYPT_ERROR: "fragDecryptError",
813 FRAG_PARSING_ERROR: "fragParsingError",
814 REMUX_ALLOC_ERROR: "remuxAllocError",
815 KEY_LOAD_ERROR: "keyLoadError",
816 KEY_LOAD_TIMEOUT: "keyLoadTimeOut",
817 BUFFER_ADD_CODEC_ERROR: "bufferAddCodecError",
818 BUFFER_APPEND_ERROR: "bufferAppendError",
819 BUFFER_APPENDING_ERROR: "bufferAppendingError",
820 BUFFER_STALLED_ERROR: "bufferStalledError",
821 BUFFER_FULL_ERROR: "bufferFullError",
822 BUFFER_SEEK_OVER_HOLE: "bufferSeekOverHole",
823 BUFFER_NUDGE_ON_STALL: "bufferNudgeOnStall",
824 INTERNAL_EXCEPTION: "internalException"
825 }
826 },
827 "./src/remux/mp4-generator.js": function(t, e, r) {
828 "use strict";
829 Object.defineProperty(e, "__esModule", {
830 value: !0
831 });
832 var s = Math.pow(2, 32) - 1,
833 i = (f.init = function() {
834 var t;
835 for (t in f.types = {
836 avc1: [],
837 avcC: [],
838 btrt: [],
839 dinf: [],
840 dref: [],
841 esds: [],
842 ftyp: [],
843 hdlr: [],
844 mdat: [],
845 mdhd: [],
846 mdia: [],
847 mfhd: [],
848 minf: [],
849 moof: [],
850 moov: [],
851 mp4a: [],
852 ".mp3": [],
853 mvex: [],
854 mvhd: [],
855 pasp: [],
856 sdtp: [],
857 stbl: [],
858 stco: [],
859 stsc: [],
860 stsd: [],
861 stsz: [],
862 stts: [],
863 tfdt: [],
864 tfhd: [],
865 traf: [],
866 trak: [],
867 trun: [],
868 trex: [],
869 tkhd: [],
870 vmhd: [],
871 smhd: []
872 }) f.types.hasOwnProperty(t) && (f.types[t] = [t.charCodeAt(0), t.charCodeAt(1), t.charCodeAt(2), t.charCodeAt(3)]);
873 var e = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 118, 105, 100, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 105, 100, 101, 111, 72, 97, 110, 100, 108, 101, 114, 0]),
874 r = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 115, 111, 117, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 111, 117, 110, 100, 72, 97, 110, 100, 108, 101, 114, 0]);
875 f.HDLR_TYPES = {
876 video: e,
877 audio: r
878 };
879 var i = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 117, 114, 108, 32, 0, 0, 0, 1]),
880 n = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]);
881 f.STTS = f.STSC = f.STCO = n, f.STSZ = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), f.VMHD = new Uint8Array([0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]), f.SMHD = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]), f.STSD = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1]);
882 var a = new Uint8Array([105, 115, 111, 109]),
883 o = new Uint8Array([97, 118, 99, 49]),
884 s = new Uint8Array([0, 0, 0, 1]);
885 f.FTYP = f.box(f.types.ftyp, a, s, a, o), f.DINF = f.box(f.types.dinf, f.box(f.types.dref, i))
886 }, f.box = function(t) {
887 for (var e, r = Array.prototype.slice.call(arguments, 1), i = 8, n = r.length, a = n; n--;) i += r[n].byteLength;
888 for ((e = new Uint8Array(i))[0] = i >> 24 & 255, e[1] = i >> 16 & 255, e[2] = i >> 8 & 255, e[3] = 255 & i, e.set(t, 4), n = 0, i = 8; n < a; n++) e.set(r[n], i), i += r[n].byteLength;
889 return e
890 }, f.hdlr = function(t) {
891 return f.box(f.types.hdlr, f.HDLR_TYPES[t])
892 }, f.mdat = function(t) {
893 return f.box(f.types.mdat, t)
894 }, f.mdhd = function(t, e) {
895 e *= t;
896 var r = Math.floor(e / (1 + s)),
897 i = Math.floor(e % (1 + s));
898 return f.box(f.types.mdhd, new Uint8Array([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, t >> 24 & 255, t >> 16 & 255, t >> 8 & 255, 255 & t, r >> 24, r >> 16 & 255, r >> 8 & 255, 255 & r, i >> 24, i >> 16 & 255, i >> 8 & 255, 255 & i, 85, 196, 0, 0]))
899 }, f.mdia = function(t) {
900 return f.box(f.types.mdia, f.mdhd(t.timescale, t.duration), f.hdlr(t.type), f.minf(t))
901 }, f.mfhd = function(t) {
902 return f.box(f.types.mfhd, new Uint8Array([0, 0, 0, 0, t >> 24, t >> 16 & 255, t >> 8 & 255, 255 & t]))
903 }, f.minf = function(t) {
904 return "audio" === t.type ? f.box(f.types.minf, f.box(f.types.smhd, f.SMHD), f.DINF, f.stbl(t)) : f.box(f.types.minf, f.box(f.types.vmhd, f.VMHD), f.DINF, f.stbl(t))
905 }, f.moof = function(t, e, r) {
906 return f.box(f.types.moof, f.mfhd(t), f.traf(r, e))
907 }, f.moov = function(t) {
908 for (var e = t.length, r = []; e--;) r[e] = f.trak(t[e]);
909 return f.box.apply(null, [f.types.moov, f.mvhd(t[0].timescale, t[0].duration)].concat(r).concat(f.mvex(t)))
910 }, f.mvex = function(t) {
911 for (var e = t.length, r = []; e--;) r[e] = f.trex(t[e]);
912 return f.box.apply(null, [f.types.mvex].concat(r))
913 }, f.mvhd = function(t, e) {
914 e *= t;
915 var r = Math.floor(e / (1 + s)),
916 i = Math.floor(e % (1 + s)),
917 n = new Uint8Array([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, t >> 24 & 255, t >> 16 & 255, t >> 8 & 255, 255 & t, r >> 24, r >> 16 & 255, r >> 8 & 255, 255 & r, i >> 24, i >> 16 & 255, i >> 8 & 255, 255 & i, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255]);
918 return f.box(f.types.mvhd, n)
919 }, f.sdtp = function(t) {
920 var e, r, i = t.samples || [],
921 n = new Uint8Array(4 + i.length);
922 for (r = 0; r < i.length; r++) e = i[r].flags, n[r + 4] = e.dependsOn << 4 | e.isDependedOn << 2 | e.hasRedundancy;
923 return f.box(f.types.sdtp, n)
924 }, f.stbl = function(t) {
925 return f.box(f.types.stbl, f.stsd(t), f.box(f.types.stts, f.STTS), f.box(f.types.stsc, f.STSC), f.box(f.types.stsz, f.STSZ), f.box(f.types.stco, f.STCO))
926 }, f.avc1 = function(t) {
927 var e, r, i, n = [],
928 a = [];
929 for (e = 0; e < t.sps.length; e++) i = (r = t.sps[e]).byteLength, n.push(i >>> 8 & 255), n.push(255 & i), n = n.concat(Array.prototype.slice.call(r));
930 for (e = 0; e < t.pps.length; e++) i = (r = t.pps[e]).byteLength, a.push(i >>> 8 & 255), a.push(255 & i), a = a.concat(Array.prototype.slice.call(r));
931 var o = f.box(f.types.avcC, new Uint8Array([1, n[3], n[4], n[5], 255, 224 | t.sps.length].concat(n).concat([t.pps.length]).concat(a))),
932 s = t.width,
933 l = t.height,
934 u = t.pixelRatio[0],
935 d = t.pixelRatio[1];
936 return f.box(f.types.avc1, new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, s >> 8 & 255, 255 & s, l >> 8 & 255, 255 & l, 0, 72, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 1, 18, 100, 97, 105, 108, 121, 109, 111, 116, 105, 111, 110, 47, 104, 108, 115, 46, 106, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 17, 17]), o, f.box(f.types.btrt, new Uint8Array([0, 28, 156, 128, 0, 45, 198, 192, 0, 45, 198, 192])), f.box(f.types.pasp, new Uint8Array([u >> 24, u >> 16 & 255, u >> 8 & 255, 255 & u, d >> 24, d >> 16 & 255, d >> 8 & 255, 255 & d])))
937 }, f.esds = function(t) {
938 var e = t.config.length;
939 return new Uint8Array([0, 0, 0, 0, 3, 23 + e, 0, 1, 0, 4, 15 + e, 64, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5].concat([e]).concat(t.config).concat([6, 1, 2]))
940 }, f.mp4a = function(t) {
941 var e = t.samplerate;
942 return f.box(f.types.mp4a, new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, t.channelCount, 0, 16, 0, 0, 0, 0, e >> 8 & 255, 255 & e, 0, 0]), f.box(f.types.esds, f.esds(t)))
943 }, f.mp3 = function(t) {
944 var e = t.samplerate;
945 return f.box(f.types[".mp3"], new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, t.channelCount, 0, 16, 0, 0, 0, 0, e >> 8 & 255, 255 & e, 0, 0]))
946 }, f.stsd = function(t) {
947 return "audio" === t.type ? t.isAAC || "mp3" !== t.codec ? f.box(f.types.stsd, f.STSD, f.mp4a(t)) : f.box(f.types.stsd, f.STSD, f.mp3(t)) : f.box(f.types.stsd, f.STSD, f.avc1(t))
948 }, f.tkhd = function(t) {
949 var e = t.id,
950 r = t.duration * t.timescale,
951 i = t.width,
952 n = t.height,
953 a = Math.floor(r / (1 + s)),
954 o = Math.floor(r % (1 + s));
955 return f.box(f.types.tkhd, new Uint8Array([1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, 255 & e, 0, 0, 0, 0, a >> 24, a >> 16 & 255, a >> 8 & 255, 255 & a, o >> 24, o >> 16 & 255, o >> 8 & 255, 255 & o, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, i >> 8 & 255, 255 & i, 0, 0, n >> 8 & 255, 255 & n, 0, 0]))
956 }, f.traf = function(t, e) {
957 var r = f.sdtp(t),
958 i = t.id,
959 n = Math.floor(e / (1 + s)),
960 a = Math.floor(e % (1 + s));
961 return f.box(f.types.traf, f.box(f.types.tfhd, new Uint8Array([0, 0, 0, 0, i >> 24, i >> 16 & 255, i >> 8 & 255, 255 & i])), f.box(f.types.tfdt, new Uint8Array([1, 0, 0, 0, n >> 24, n >> 16 & 255, n >> 8 & 255, 255 & n, a >> 24, a >> 16 & 255, a >> 8 & 255, 255 & a])), f.trun(t, r.length + 16 + 20 + 8 + 16 + 8 + 8), r)
962 }, f.trak = function(t) {
963 return t.duration = t.duration || 4294967295, f.box(f.types.trak, f.tkhd(t), f.mdia(t))
964 }, f.trex = function(t) {
965 var e = t.id;
966 return f.box(f.types.trex, new Uint8Array([0, 0, 0, 0, e >> 24, e >> 16 & 255, e >> 8 & 255, 255 & e, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1]))
967 }, f.trun = function(t, e) {
968 var r, i, n, a, o, s, l = t.samples || [],
969 u = l.length,
970 d = 12 + 16 * u,
971 c = new Uint8Array(d);
972 for (e += 8 + d, c.set([0, 0, 15, 1, u >>> 24 & 255, u >>> 16 & 255, u >>> 8 & 255, 255 & u, e >>> 24 & 255, e >>> 16 & 255, e >>> 8 & 255, 255 & e], 0), r = 0; r < u; r++) n = (i = l[r]).duration, a = i.size, o = i.flags, s = i.cts, c.set([n >>> 24 & 255, n >>> 16 & 255, n >>> 8 & 255, 255 & n, a >>> 24 & 255, a >>> 16 & 255, a >>> 8 & 255, 255 & a, o.isLeading << 2 | o.dependsOn, o.isDependedOn << 6 | o.hasRedundancy << 4 | o.paddingValue << 1 | o.isNonSync, 61440 & o.degradPrio, 15 & o.degradPrio, s >>> 24 & 255, s >>> 16 & 255, s >>> 8 & 255, 255 & s], 12 + 16 * r);
973 return f.box(f.types.trun, c)
974 }, f.initSegment = function(t) {
975 f.types || f.init();
976 var e, r = f.moov(t);
977 return (e = new Uint8Array(f.FTYP.byteLength + r.byteLength)).set(f.FTYP), e.set(r, f.FTYP.byteLength), e
978 }, f);
979
980 function f() {}
981 e.default = i
982 },
983 "./src/remux/aac-helper.js": function(t, e, r) {
984 "use strict";
985 Object.defineProperty(e, "__esModule", {
986 value: !0
987 });
988 var i = (n.getSilentFrame = function(t, e) {
989 switch (t) {
990 case "mp4a.40.2":
991 if (1 === e) return new Uint8Array([0, 200, 0, 128, 35, 128]);
992 if (2 === e) return new Uint8Array([33, 0, 73, 144, 2, 25, 0, 35, 128]);
993 if (3 === e) return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 142]);
994 if (4 === e) return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 128, 44, 128, 8, 2, 56]);
995 if (5 === e) return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 56]);
996 if (6 === e) return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 0, 178, 0, 32, 8, 224]);
997 break;
998 default:
999 if (1 === e) return new Uint8Array([1, 64, 34, 128, 163, 78, 230, 128, 186, 8, 0, 0, 0, 28, 6, 241, 193, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]);
1000 if (2 === e) return new Uint8Array([1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]);
1001 if (3 === e) return new Uint8Array([1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94])
1002 }
1003 return null
1004 }, n);
1005
1006 function n() {}
1007 e.default = i
1008 },
1009 "./src/demux/mp3demuxer.js": function(t, e, r) {
1010 "use strict";
1011 Object.defineProperty(e, "__esModule", {
1012 value: !0
1013 });
1014 var p = r("./src/demux/id3.js"),
1015 n = r("./src/utils/logger.js"),
1016 g = r("./src/demux/mpegaudio.js"),
1017 i = (a.prototype.resetInitSegment = function(t, e, r, i) {
1018 this._audioTrack = {
1019 container: "audio/mpeg",
1020 type: "audio",
1021 id: -1,
1022 sequenceNumber: 0,
1023 isAAC: !1,
1024 samples: [],
1025 len: 0,
1026 manifestCodec: e,
1027 duration: i,
1028 inputTimeScale: 9e4
1029 }
1030 }, a.prototype.resetTimeStamp = function() {}, a.probe = function(t) {
1031 var e, r, i = p.default.getID3Data(t, 0);
1032 if (i && void 0 !== p.default.getTimeStamp(i))
1033 for (e = i.length, r = Math.min(t.length - 1, e + 100); e < r; e++)
1034 if (g.default.probe(t, e)) return n.logger.log("MPEG Audio sync word found !"), !0;
1035 return !1
1036 }, a.prototype.append = function(t, e, r, i) {
1037 for (var n = p.default.getID3Data(t, 0), a = p.default.getTimeStamp(n), o = a ? 90 * a : 9e4 * e, s = n.length, l = t.length, u = 0, d = 0, c = this._audioTrack, f = [{
1038 pts: o,
1039 dts: o,
1040 data: n
1041 }]; s < l;)
1042 if (g.default.isHeader(t, s)) {
1043 var h = g.default.appendFrame(c, t, s, o, u);
1044 if (!h) break;
1045 s += h.length, d = h.sample.pts, u++
1046 } else p.default.isHeader(t, s) ? (n = p.default.getID3Data(t, s), f.push({
1047 pts: d,
1048 dts: d,
1049 data: n
1050 }), s += n.length) : s++;
1051 this.remuxer.remux(c, {
1052 samples: []
1053 }, {
1054 samples: f,
1055 inputTimeScale: 9e4
1056 }, {
1057 samples: []
1058 }, e, r, i)
1059 }, a.prototype.destroy = function() {}, a);
1060
1061 function a(t, e, r) {
1062 this.observer = t, this.config = r, this.remuxer = e
1063 }
1064 e.default = i
1065 },
1066 "./src/demux/mpegaudio.js": function(t, e, r) {
1067 "use strict";
1068 Object.defineProperty(e, "__esModule", {
1069 value: !0
1070 });
1071 var g = {
1072 BitratesMap: [32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160],
1073 SamplingRateMap: [44100, 48e3, 32e3, 22050, 24e3, 16e3, 11025, 12e3, 8e3],
1074 SamplesCoefficients: [
1075 [0, 72, 144, 12],
1076 [0, 0, 0, 0],
1077 [0, 72, 144, 12],
1078 [0, 144, 144, 12]
1079 ],
1080 BytesInSlot: [0, 1, 1, 4],
1081 appendFrame: function(t, e, r, i, n) {
1082 if (!(r + 24 > e.length)) {
1083 var a = this.parseHeader(e, r);
1084 if (a && r + a.frameLength <= e.length) {
1085 var o = i + n * (9e4 * a.samplesPerFrame / a.sampleRate),
1086 s = {
1087 unit: e.subarray(r, r + a.frameLength),
1088 pts: o,
1089 dts: o
1090 };
1091 return t.config = [], t.channelCount = a.channelCount, t.samplerate = a.sampleRate, t.samples.push(s), t.len += a.frameLength, {
1092 sample: s,
1093 length: a.frameLength
1094 }
1095 }
1096 }
1097 },
1098 parseHeader: function(t, e) {
1099 var r = t[e + 1] >> 3 & 3,
1100 i = t[e + 1] >> 1 & 3,
1101 n = t[e + 2] >> 4 & 15,
1102 a = t[e + 2] >> 2 & 3,
1103 o = t[e + 2] >> 1 & 1;
1104 if (1 != r && 0 != n && 15 != n && 3 != a) {
1105 var s = 3 == r ? 3 - i : 3 == i ? 3 : 4,
1106 l = 1e3 * g.BitratesMap[14 * s + n - 1],
1107 u = 3 == r ? 0 : 2 == r ? 1 : 2,
1108 d = g.SamplingRateMap[3 * u + a],
1109 c = t[e + 3] >> 6 == 3 ? 1 : 2,
1110 f = g.SamplesCoefficients[r][i],
1111 h = g.BytesInSlot[i],
1112 p = 8 * f * h;
1113 return {
1114 sampleRate: d,
1115 channelCount: c,
1116 frameLength: parseInt(f * l / d + o, 10) * h,
1117 samplesPerFrame: p
1118 }
1119 }
1120 },
1121 isHeaderPattern: function(t, e) {
1122 return 255 === t[e] && 224 == (224 & t[e + 1]) && 0 != (6 & t[e + 1])
1123 },
1124 isHeader: function(t, e) {
1125 return !!(e + 1 < t.length && this.isHeaderPattern(t, e))
1126 },
1127 probe: function(t, e) {
1128 if (e + 1 < t.length && this.isHeaderPattern(t, e)) {
1129 var r = this.parseHeader(t, e),
1130 i = 4;
1131 r && r.frameLength && (i = r.frameLength);
1132 var n = e + i;
1133 if (n === t.length || n + 1 < t.length && this.isHeaderPattern(t, n)) return !0
1134 }
1135 return !1
1136 }
1137 };
1138 e.default = g
1139 },
1140 "./src/demux/id3.js": function(t, e, r) {
1141 "use strict";
1142 Object.defineProperty(e, "__esModule", {
1143 value: !0
1144 });
1145 var i = (s.isHeader = function(t, e) {
1146 return e + 10 <= t.length && 73 === t[e] && 68 === t[e + 1] && 51 === t[e + 2] && t[e + 3] < 255 && t[e + 4] < 255 && t[e + 6] < 128 && t[e + 7] < 128 && t[e + 8] < 128 && t[e + 9] < 128
1147 }, s.isFooter = function(t, e) {
1148 return e + 10 <= t.length && 51 === t[e] && 68 === t[e + 1] && 73 === t[e + 2] && t[e + 3] < 255 && t[e + 4] < 255 && t[e + 6] < 128 && t[e + 7] < 128 && t[e + 8] < 128 && t[e + 9] < 128
1149 }, s.getID3Data = function(t, e) {
1150 for (var r = e, i = 0; s.isHeader(t, e);) i += 10, i += s._readSize(t, e + 6), s.isFooter(t, e + 10) && (i += 10), e += i;
1151 if (0 < i) return t.subarray(r, r + i)
1152 }, s._readSize = function(t, e) {
1153 var r = 0;
1154 return r = (127 & t[e]) << 21, r |= (127 & t[e + 1]) << 14, r |= (127 & t[e + 2]) << 7, r |= 127 & t[e + 3]
1155 }, s.getTimeStamp = function(t) {
1156 for (var e = s.getID3Frames(t), r = 0; r < e.length; r++) {
1157 var i = e[r];
1158 if (s.isTimeStampFrame(i)) return s._readTimeStamp(i)
1159 }
1160 }, s.isTimeStampFrame = function(t) {
1161 return t && "PRIV" === t.key && "com.apple.streaming.transportStreamTimestamp" === t.info
1162 }, s._getFrameData = function(t) {
1163 var e = String.fromCharCode(t[0], t[1], t[2], t[3]),
1164 r = s._readSize(t, 4);
1165 return {
1166 type: e,
1167 size: r,
1168 data: t.subarray(10, 10 + r)
1169 }
1170 }, s.getID3Frames = function(t) {
1171 for (var e = 0, r = []; s.isHeader(t, e);) {
1172 for (var i = s._readSize(t, e + 6), n = (e += 10) + i; e + 8 < n;) {
1173 var a = s._getFrameData(t.subarray(e)),
1174 o = s._decodeFrame(a);
1175 o && r.push(o), e += a.size + 10
1176 }
1177 s.isFooter(t, e) && (e += 10)
1178 }
1179 return r
1180 }, s._decodeFrame = function(t) {
1181 return "PRIV" === t.type ? s._decodePrivFrame(t) : "T" === t.type[0] ? s._decodeTextFrame(t) : "W" === t.type[0] ? s._decodeURLFrame(t) : void 0
1182 }, s._readTimeStamp = function(t) {
1183 if (8 === t.data.byteLength) {
1184 var e = new Uint8Array(t.data),
1185 r = 1 & e[3],
1186 i = (e[4] << 23) + (e[5] << 15) + (e[6] << 7) + e[7];
1187 return i /= 45, r && (i += 47721858.84), Math.round(i)
1188 }
1189 }, s._decodePrivFrame = function(t) {
1190 if (!(t.size < 2)) {
1191 var e = s._utf8ArrayToStr(t.data, !0),
1192 r = new Uint8Array(t.data.subarray(e.length + 1));
1193 return {
1194 key: t.type,
1195 info: e,
1196 data: r.buffer
1197 }
1198 }
1199 }, s._decodeTextFrame = function(t) {
1200 if (!(t.size < 2)) {
1201 if ("TXXX" === t.type) {
1202 var e = 1,
1203 r = s._utf8ArrayToStr(t.data.subarray(e));
1204 e += r.length + 1;
1205 var i = s._utf8ArrayToStr(t.data.subarray(e));
1206 return {
1207 key: t.type,
1208 info: r,
1209 data: i
1210 }
1211 }
1212 var n = s._utf8ArrayToStr(t.data.subarray(1));
1213 return {
1214 key: t.type,
1215 data: n
1216 }
1217 }
1218 }, s._decodeURLFrame = function(t) {
1219 if ("WXXX" === t.type) {
1220 if (t.size < 2) return;
1221 var e = 1,
1222 r = s._utf8ArrayToStr(t.data.subarray(e));
1223 e += r.length + 1;
1224 var i = s._utf8ArrayToStr(t.data.subarray(e));
1225 return {
1226 key: t.type,
1227 info: r,
1228 data: i
1229 }
1230 }
1231 var n = s._utf8ArrayToStr(t.data);
1232 return {
1233 key: t.type,
1234 data: n
1235 }
1236 }, s._utf8ArrayToStr = function(t, e) {
1237 void 0 === e && (e = !1);
1238 for (var r, i, n, a = t.length, o = "", s = 0; s < a;) {
1239 if (0 === (r = t[s++]) && e) return o;
1240 if (0 !== r && 3 !== r) switch (r >> 4) {
1241 case 0:
1242 case 1:
1243 case 2:
1244 case 3:
1245 case 4:
1246 case 5:
1247 case 6:
1248 case 7:
1249 o += String.fromCharCode(r);
1250 break;
1251 case 12:
1252 case 13:
1253 i = t[s++], o += String.fromCharCode((31 & r) << 6 | 63 & i);
1254 break;
1255 case 14:
1256 i = t[s++], n = t[s++], o += String.fromCharCode((15 & r) << 12 | (63 & i) << 6 | (63 & n) << 0)
1257 }
1258 }
1259 return o
1260 }, s);
1261
1262 function s() {}
1263 var n = i._utf8ArrayToStr;
1264 e.utf8ArrayToStr = n, e.default = i
1265 },
1266 "./src/demux/tsdemuxer.js": function(t, e, r) {
1267 "use strict";
1268 Object.defineProperty(e, "__esModule", {
1269 value: !0
1270 });
1271 var m = r("./src/demux/adts.js"),
1272 s = r("./src/demux/mpegaudio.js"),
1273 O = r("./src/events.js"),
1274 S = r("./src/demux/exp-golomb.js"),
1275 i = r("./src/demux/sample-aes.js"),
1276 I = r("./src/utils/logger.js"),
1277 D = r("./src/errors.js"),
1278 n = {
1279 video: 1,
1280 audio: 2,
1281 id3: 3,
1282 text: 4
1283 },
1284 a = (x.prototype.setDecryptData = function(t) {
1285 null != t && null != t.key && "SAMPLE-AES" === t.method ? this.sampleAes = new i.default(this.observer, this.config, t, this.discardEPB) : this.sampleAes = null
1286 }, x.probe = function(t) {
1287 var e = x._syncOffset(t);
1288 return !(e < 0 || (e && I.logger.warn("MPEG2-TS detected but first sync word found @ offset " + e + ", junk ahead ?"), 0))
1289 }, x._syncOffset = function(t) {
1290 for (var e = Math.min(1e3, t.length - 564), r = 0; r < e;) {
1291 if (71 === t[r] && 71 === t[r + 188] && 71 === t[r + 376]) return r;
1292 r++
1293 }
1294 return -1
1295 }, x.createTrack = function(t, e) {
1296 return {
1297 container: "video" === t || "audio" === t ? "video/mp2t" : void 0,
1298 type: t,
1299 id: n[t],
1300 pid: -1,
1301 inputTimeScale: 9e4,
1302 sequenceNumber: 0,
1303 samples: [],
1304 len: 0,
1305 dropped: "video" === t ? 0 : void 0,
1306 isAAC: "audio" === t || void 0,
1307 duration: "audio" === t ? e : void 0
1308 }
1309 }, x.prototype.resetInitSegment = function(t, e, r, i) {
1310 this.pmtParsed = !1, this._pmtId = -1, this._avcTrack = x.createTrack("video", i), this._audioTrack = x.createTrack("audio", i), this._id3Track = x.createTrack("id3", i), this._txtTrack = x.createTrack("text", i), this.aacOverFlow = null, this.aacLastPTS = null, this.avcSample = null, this.audioCodec = e, this.videoCodec = r, this._duration = i
1311 }, x.prototype.resetTimeStamp = function() {}, x.prototype.append = function(t, e, r, i) {
1312 var n, a, o, s, l, u = t.length,
1313 d = !1;
1314 this.contiguous = r;
1315 var c = this.pmtParsed,
1316 f = this._avcTrack,
1317 h = this._audioTrack,
1318 p = this._id3Track,
1319 g = f.pid,
1320 m = h.pid,
1321 y = p.pid,
1322 v = this._pmtId,
1323 A = f.pesData,
1324 _ = h.pesData,
1325 b = p.pesData,
1326 E = this._parsePAT,
1327 T = this._parsePMT,
1328 S = this._parsePES,
1329 k = this._parseAVCPES.bind(this),
1330 L = this._parseAACPES.bind(this),
1331 R = this._parseMPEGPES.bind(this),
1332 C = this._parseID3PES.bind(this),
1333 w = x._syncOffset(t);
1334 for (u -= (u + w) % 188, n = w; n < u; n += 188)
1335 if (71 === t[n]) {
1336 if (a = !!(64 & t[n + 1]), o = ((31 & t[n + 1]) << 8) + t[n + 2], 1 < (48 & t[n + 3]) >> 4) {
1337 if ((s = n + 5 + t[n + 4]) === n + 188) continue
1338 } else s = n + 4;
1339 switch (o) {
1340 case g:
1341 a && (A && (l = S(A)) && void 0 !== l.pts && k(l, !1), A = {
1342 data: [],
1343 size: 0
1344 }), A && (A.data.push(t.subarray(s, n + 188)), A.size += n + 188 - s);
1345 break;
1346 case m:
1347 a && (_ && (l = S(_)) && void 0 !== l.pts && (h.isAAC ? L(l) : R(l)), _ = {
1348 data: [],
1349 size: 0
1350 }), _ && (_.data.push(t.subarray(s, n + 188)), _.size += n + 188 - s);
1351 break;
1352 case y:
1353 a && (b && (l = S(b)) && void 0 !== l.pts && C(l), b = {
1354 data: [],
1355 size: 0
1356 }), b && (b.data.push(t.subarray(s, n + 188)), b.size += n + 188 - s);
1357 break;
1358 case 0:
1359 a && (s += t[s] + 1), v = this._pmtId = E(t, s);
1360 break;
1361 case v:
1362 a && (s += t[s] + 1);
1363 var P = T(t, s, !0 === this.typeSupported.mpeg || !0 === this.typeSupported.mp3, null != this.sampleAes);
1364 0 < (g = P.avc) && (f.pid = g), 0 < (m = P.audio) && (h.pid = m, h.isAAC = P.isAAC), 0 < (y = P.id3) && (p.pid = y), d && !c && (I.logger.log("reparse from beginning"), d = !1, n = w - 188), c = this.pmtParsed = !0;
1365 break;
1366 case 17:
1367 case 8191:
1368 break;
1369 default:
1370 d = !0
1371 }
1372 } else this.observer.trigger(O.default.ERROR, {
1373 type: D.ErrorTypes.MEDIA_ERROR,
1374 details: D.ErrorDetails.FRAG_PARSING_ERROR,
1375 fatal: !1,
1376 reason: "TS packet did not start with 0x47"
1377 });
1378 A && (l = S(A)) && void 0 !== l.pts ? (k(l, !0), f.pesData = null) : f.pesData = A, _ && (l = S(_)) && void 0 !== l.pts ? (h.isAAC ? L(l) : R(l), h.pesData = null) : (_ && _.size && I.logger.log("last AAC PES packet truncated,might overlap between fragments"), h.pesData = _), b && (l = S(b)) && void 0 !== l.pts ? (C(l), p.pesData = null) : p.pesData = b, null == this.sampleAes ? this.remuxer.remux(h, f, p, this._txtTrack, e, r, i) : this.decryptAndRemux(h, f, p, this._txtTrack, e, r, i)
1379 }, x.prototype.decryptAndRemux = function(t, e, r, i, n, a, o) {
1380 if (t.samples && t.isAAC) {
1381 var s = this;
1382 this.sampleAes.decryptAacSamples(t.samples, 0, function() {
1383 s.decryptAndRemuxAvc(t, e, r, i, n, a, o)
1384 })
1385 } else this.decryptAndRemuxAvc(t, e, r, i, n, a, o)
1386 }, x.prototype.decryptAndRemuxAvc = function(t, e, r, i, n, a, o) {
1387 if (e.samples) {
1388 var s = this;
1389 this.sampleAes.decryptAvcSamples(e.samples, 0, 0, function() {
1390 s.remuxer.remux(t, e, r, i, n, a, o)
1391 })
1392 } else this.remuxer.remux(t, e, r, i, n, a, o)
1393 }, x.prototype.destroy = function() {
1394 this._initPTS = this._initDTS = void 0, this._duration = 0
1395 }, x.prototype._parsePAT = function(t, e) {
1396 return (31 & t[e + 10]) << 8 | t[e + 11]
1397 }, x.prototype._parsePMT = function(t, e, r, i) {
1398 var n, a, o = {
1399 audio: -1,
1400 avc: -1,
1401 id3: -1,
1402 isAAC: !0
1403 };
1404 for (n = e + 3 + ((15 & t[e + 1]) << 8 | t[e + 2]) - 4, e += 12 + ((15 & t[e + 10]) << 8 | t[e + 11]); e < n;) {
1405 switch (a = (31 & t[e + 1]) << 8 | t[e + 2], t[e]) {
1406 case 207:
1407 if (!i) {
1408 I.logger.log("unkown stream type:" + t[e]);
1409 break
1410 }
1411 case 15:
1412 -1 === o.audio && (o.audio = a);
1413 break;
1414 case 21:
1415 -1 === o.id3 && (o.id3 = a);
1416 break;
1417 case 219:
1418 if (!i) {
1419 I.logger.log("unkown stream type:" + t[e]);
1420 break
1421 }
1422 case 27:
1423 -1 === o.avc && (o.avc = a);
1424 break;
1425 case 3:
1426 case 4:
1427 r ? -1 === o.audio && (o.audio = a, o.isAAC = !1) : I.logger.log("MPEG audio found, not supported in this browser for now");
1428 break;
1429 case 36:
1430 I.logger.warn("HEVC stream type found, not supported for now");
1431 break;
1432 default:
1433 I.logger.log("unkown stream type:" + t[e])
1434 }
1435 e += 5 + ((15 & t[e + 3]) << 8 | t[e + 4])
1436 }
1437 return o
1438 }, x.prototype._parsePES = function(t) {
1439 var e, r, i, n, a, o, s, l, u = 0,
1440 d = t.data;
1441 if (!t || 0 === t.size) return null;
1442 for (; d[0].length < 19 && 1 < d.length;) {
1443 var c = new Uint8Array(d[0].length + d[1].length);
1444 c.set(d[0]), c.set(d[1], d[0].length), d[0] = c, d.splice(1, 1)
1445 }
1446 if (1 !== ((e = d[0])[0] << 16) + (e[1] << 8) + e[2]) return null;
1447 if ((i = (e[4] << 8) + e[5]) && i > t.size - 6) return null;
1448 192 & (r = e[7]) && (4294967295 < (o = 536870912 * (14 & e[9]) + 4194304 * (255 & e[10]) + 16384 * (254 & e[11]) + 128 * (255 & e[12]) + (254 & e[13]) / 2) && (o -= 8589934592), 64 & r ? (4294967295 < (s = 536870912 * (14 & e[14]) + 4194304 * (255 & e[15]) + 16384 * (254 & e[16]) + 128 * (255 & e[17]) + (254 & e[18]) / 2) && (s -= 8589934592), 54e5 < o - s && (I.logger.warn(Math.round((o - s) / 9e4) + "s delta between PTS and DTS, align them"), o = s)) : s = o), l = (n = e[8]) + 9, t.size -= l, a = new Uint8Array(t.size);
1449 for (var f = 0, h = d.length; f < h; f++) {
1450 var p = (e = d[f]).byteLength;
1451 if (l) {
1452 if (p < l) {
1453 l -= p;
1454 continue
1455 }
1456 e = e.subarray(l), p -= l, l = 0
1457 }
1458 a.set(e, u), u += p
1459 }
1460 return i && (i -= n + 3), {
1461 data: a,
1462 pts: o,
1463 dts: s,
1464 len: i
1465 }
1466 }, x.prototype.pushAccesUnit = function(t, e) {
1467 if (t.units.length && t.frame) {
1468 var r = e.samples,
1469 i = r.length;
1470 !this.config.forceKeyFrameOnDiscontinuity || !0 === t.key || e.sps && (i || this.contiguous) ? (t.id = i, r.push(t)) : e.dropped++
1471 }
1472 t.debug.length && I.logger.log(t.pts + "/" + t.dts + ":" + t.debug)
1473 }, x.prototype._parseAVCPES = function(p, t) {
1474 function g(t, e, r, i) {
1475 return {
1476 key: t,
1477 pts: e,
1478 dts: r,
1479 units: [],
1480 debug: i
1481 }
1482 }
1483 var m, y, v, A = this,
1484 _ = this._avcTrack,
1485 e = this._parseAVCNALu(p.data),
1486 b = this.avcSample,
1487 E = !1,
1488 T = this.pushAccesUnit.bind(this);
1489 p.data = null, b && e.length && !_.audFound && (T(b, _), b = this.avcSample = g(!1, p.pts, p.dts, "")), e.forEach(function(t) {
1490 switch (t.type) {
1491 case 1:
1492 y = !0, b || (b = A.avcSample = g(!0, p.pts, p.dts, "")), b.frame = !0;
1493 var e = t.data;
1494 if (E && 4 < e.length) {
1495 var r = new S.default(e).readSliceType();
1496 2 !== r && 4 !== r && 7 !== r && 9 !== r || (b.key = !0)
1497 }
1498 break;
1499 case 5:
1500 y = !0, b || (b = A.avcSample = g(!0, p.pts, p.dts, "")), b.key = !0, b.frame = !0;
1501 break;
1502 case 6:
1503 y = !0, (m = new S.default(A.discardEPB(t.data))).readUByte();
1504 for (var i = 0, n = 0, a = !1, o = 0; !a && 1 < m.bytesAvailable;) {
1505 for (i = 0; i += o = m.readUByte(), 255 === o;);
1506 for (n = 0; n += o = m.readUByte(), 255 === o;);
1507 if (4 === i && 0 !== m.bytesAvailable) {
1508 if (a = !0, 181 === m.readUByte() && 49 === m.readUShort() && 1195456820 === m.readUInt() && 3 === m.readUByte()) {
1509 var s = m.readUByte(),
1510 l = 31 & s,
1511 u = [s, m.readUByte()];
1512 for (v = 0; v < l; v++) u.push(m.readUByte()), u.push(m.readUByte()), u.push(m.readUByte());
1513 A._insertSampleInOrder(A._txtTrack.samples, {
1514 type: 3,
1515 pts: p.pts,
1516 bytes: u
1517 })
1518 }
1519 } else if (n < m.bytesAvailable)
1520 for (v = 0; v < n; v++) m.readUByte()
1521 }
1522 break;
1523 case 7:
1524 if (E = y = !0, !_.sps) {
1525 var d = (m = new S.default(t.data)).readSPS();
1526 _.width = d.width, _.height = d.height, _.pixelRatio = d.pixelRatio, _.sps = [t.data], _.duration = A._duration;
1527 var c = t.data.subarray(1, 4),
1528 f = "avc1.";
1529 for (v = 0; v < 3; v++) {
1530 var h = c[v].toString(16);
1531 h.length < 2 && (h = "0" + h), f += h
1532 }
1533 _.codec = f
1534 }
1535 break;
1536 case 8:
1537 y = !0, _.pps || (_.pps = [t.data]);
1538 break;
1539 case 9:
1540 y = !1, _.audFound = !0, b && T(b, _), b = A.avcSample = g(!1, p.pts, p.dts, "");
1541 break;
1542 case 12:
1543 y = !1;
1544 break;
1545 default:
1546 y = !1, b && (b.debug += "unknown NAL " + t.type + " ")
1547 }
1548 b && y && b.units.push(t)
1549 }), t && b && (T(b, _), this.avcSample = null)
1550 }, x.prototype._insertSampleInOrder = function(t, e) {
1551 var r = t.length;
1552 if (0 < r) {
1553 if (e.pts >= t[r - 1].pts) t.push(e);
1554 else
1555 for (var i = r - 1; 0 <= i; i--)
1556 if (e.pts < t[i].pts) {
1557 t.splice(i, 0, e);
1558 break
1559 }
1560 } else t.push(e)
1561 }, x.prototype._getLastNalUnit = function() {
1562 var t, e = this.avcSample;
1563 if (!e || 0 === e.units.length) {
1564 var r = this._avcTrack.samples;
1565 e = r[r.length - 1]
1566 }
1567 if (e) {
1568 var i = e.units;
1569 t = i[i.length - 1]
1570 }
1571 return t
1572 }, x.prototype._parseAVCNALu = function(t) {
1573 var e, r, i, n, a = 0,
1574 o = t.byteLength,
1575 s = this._avcTrack,
1576 l = s.naluState || 0,
1577 u = l,
1578 d = [],
1579 c = -1;
1580 for (-1 === l && (n = 31 & t[c = 0], l = 0, a = 1); a < o;)
1581 if (e = t[a++], l)
1582 if (1 !== l)
1583 if (e)
1584 if (1 === e) {
1585 var f, h;
1586 0 <= c ? (i = {
1587 data: t.subarray(c, a - l - 1),
1588 type: n
1589 }, d.push(i)) : (f = this._getLastNalUnit()) && (u && a <= 4 - u && f.state && (f.data = f.data.subarray(0, f.data.byteLength - u)), 0 < (r = a - l - 1) && ((h = new Uint8Array(f.data.byteLength + r)).set(f.data, 0), h.set(t.subarray(0, r), f.data.byteLength), f.data = h)), l = a < o ? (n = 31 & t[c = a], 0) : -1
1590 } else l = 0;
1591 else l = 3;
1592 else l = e ? 0 : 2;
1593 else l = e ? 0 : 1;
1594 return 0 <= c && 0 <= l && (i = {
1595 data: t.subarray(c, o),
1596 type: n,
1597 state: l
1598 }, d.push(i)), 0 !== d.length || (f = this._getLastNalUnit()) && ((h = new Uint8Array(f.data.byteLength + t.byteLength)).set(f.data, 0), h.set(t, f.data.byteLength), f.data = h), s.naluState = l, d
1599 }, x.prototype.discardEPB = function(t) {
1600 for (var e, r, i = t.byteLength, n = [], a = 1; a < i - 2;) 0 === t[a] && 0 === t[a + 1] && 3 === t[a + 2] ? (n.push(a + 2), a += 2) : a++;
1601 if (0 === n.length) return t;
1602 e = i - n.length, r = new Uint8Array(e);
1603 var o = 0;
1604 for (a = 0; a < e; o++, a++) o === n[0] && (o++, n.shift()), r[a] = t[o];
1605 return r
1606 }, x.prototype._parseAACPES = function(t) {
1607 var e, r, i, n, a, o = this._audioTrack,
1608 s = t.data,
1609 l = t.pts,
1610 u = this.aacOverFlow,
1611 d = this.aacLastPTS;
1612 if (u) {
1613 var c = new Uint8Array(u.byteLength + s.byteLength);
1614 c.set(u, 0), c.set(s, u.byteLength), s = c
1615 }
1616 for (i = 0, a = s.length; i < a - 1 && !m.isHeader(s, i); i++);
1617 if (i) {
1618 var f = void 0,
1619 h = void 0;
1620 if (h = i < a - 1 ? (f = "AAC PES did not start with ADTS header,offset:" + i, !1) : (f = "no ADTS header found in AAC PES", !0), I.logger.warn("parsing error:" + f), this.observer.trigger(O.default.ERROR, {
1621 type: D.ErrorTypes.MEDIA_ERROR,
1622 details: D.ErrorDetails.FRAG_PARSING_ERROR,
1623 fatal: h,
1624 reason: f
1625 }), h) return
1626 }
1627 if (m.initTrackConfig(o, this.observer, s, i, this.audioCodec), r = 0, e = m.getFrameDuration(o.samplerate), u && d) {
1628 var p = d + e;
1629 1 < Math.abs(p - l) && (I.logger.log("AAC: align PTS for overlapping frames by " + Math.round((p - l) / 90)), l = p)
1630 }
1631 for (; i < a;)
1632 if (m.isHeader(s, i) && i + 5 < a) {
1633 var g = m.appendFrame(o, s, i, l, r);
1634 if (!g) break;
1635 i += g.length, n = g.sample.pts, r++
1636 } else i++;
1637 u = i < a ? s.subarray(i, a) : null, this.aacOverFlow = u, this.aacLastPTS = n
1638 }, x.prototype._parseMPEGPES = function(t) {
1639 for (var e = t.data, r = e.length, i = 0, n = 0, a = t.pts; n < r;)
1640 if (s.default.isHeader(e, n)) {
1641 var o = s.default.appendFrame(this._audioTrack, e, n, a, i);
1642 if (!o) break;
1643 n += o.length, i++
1644 } else n++
1645 }, x.prototype._parseID3PES = function(t) {
1646 this._id3Track.samples.push(t)
1647 }, x);
1648
1649 function x(t, e, r, i) {
1650 this.observer = t, this.config = r, this.typeSupported = i, this.remuxer = e, this.sampleAes = null
1651 }
1652 e.default = a
1653 },
1654 "./src/demux/sample-aes.js": function(t, e, r) {
1655 "use strict";
1656 Object.defineProperty(e, "__esModule", {
1657 value: !0
1658 });
1659 var n = r("./src/crypt/decrypter.js"),
1660 i = (a.prototype.decryptBuffer = function(t, e) {
1661 this.decrypter.decrypt(t, this.decryptdata.key.buffer, this.decryptdata.iv.buffer, e)
1662 }, a.prototype.decryptAacSample = function(e, r, i, n) {
1663 var a = e[r].unit,
1664 t = a.subarray(16, a.length - a.length % 16),
1665 o = t.buffer.slice(t.byteOffset, t.byteOffset + t.length),
1666 s = this;
1667 this.decryptBuffer(o, function(t) {
1668 t = new Uint8Array(t), a.set(t, 16), n || s.decryptAacSamples(e, r + 1, i)
1669 })
1670 }, a.prototype.decryptAacSamples = function(t, e, r) {
1671 for (;; e++) {
1672 if (e >= t.length) return void r();
1673 if (!(t[e].unit.length < 32)) {
1674 var i = this.decrypter.isSync();
1675 if (this.decryptAacSample(t, e, r, i), !i) return
1676 }
1677 }
1678 }, a.prototype.getAvcEncryptedData = function(t) {
1679 for (var e = 16 * Math.floor((t.length - 48) / 160) + 16, r = new Int8Array(e), i = 0, n = 32; n <= t.length - 16; n += 160, i += 16) r.set(t.subarray(n, n + 16), i);
1680 return r
1681 }, a.prototype.getAvcDecryptedUnit = function(t, e) {
1682 e = new Uint8Array(e);
1683 for (var r = 0, i = 32; i <= t.length - 16; i += 160, r += 16) t.set(e.subarray(r, r + 16), i);
1684 return t
1685 }, a.prototype.decryptAvcSample = function(e, r, i, n, a, o) {
1686 var s = this.discardEPB(a.data),
1687 t = this.getAvcEncryptedData(s),
1688 l = this;
1689 this.decryptBuffer(t.buffer, function(t) {
1690 a.data = l.getAvcDecryptedUnit(s, t), o || l.decryptAvcSamples(e, r, i + 1, n)
1691 })
1692 }, a.prototype.decryptAvcSamples = function(t, e, r, i) {
1693 for (;; e++, r = 0) {
1694 if (e >= t.length) return void i();
1695 for (var n = t[e].units; !(r >= n.length); r++) {
1696 var a = n[r];
1697 if (!(a.length <= 48 || 1 !== a.type && 5 !== a.type)) {
1698 var o = this.decrypter.isSync();
1699 if (this.decryptAvcSample(t, e, r, i, a, o), !o) return
1700 }
1701 }
1702 }
1703 }, a);
1704
1705 function a(t, e, r, i) {
1706 this.decryptdata = r, this.discardEPB = i, this.decrypter = new n.default(t, e, {
1707 removePKCS7Padding: !1
1708 })
1709 }
1710 e.default = i
1711 },
1712 "./src/crypt/decrypter.js": function(t, e, r) {
1713 "use strict";
1714 Object.defineProperty(e, "__esModule", {
1715 value: !0
1716 });
1717 var s = r("./src/crypt/aes-crypto.js"),
1718 l = r("./src/crypt/fast-aes-key.js"),
1719 u = r("./src/crypt/aes-decryptor.js"),
1720 a = r("./src/errors.js"),
1721 d = r("./src/utils/logger.js"),
1722 o = r("./src/events.js"),
1723 c = r("./src/utils/get-self-scope.js").getSelfScope(),
1724 i = (n.prototype.isSync = function() {
1725 return this.disableWebCrypto && this.config.enableSoftwareAES
1726 }, n.prototype.decrypt = function(e, r, i, n) {
1727 var a = this;
1728 if (this.disableWebCrypto && this.config.enableSoftwareAES) {
1729 this.logEnabled && (d.logger.log("JS AES decrypt"), this.logEnabled = !1);
1730 var t = this.decryptor;
1731 t || (this.decryptor = t = new u.default), t.expandKey(r), n(t.decrypt(e, 0, i, this.removePKCS7Padding))
1732 } else {
1733 this.logEnabled && (d.logger.log("WebCrypto AES decrypt"), this.logEnabled = !1);
1734 var o = this.subtle;
1735 this.key !== r && (this.key = r, this.fastAesKey = new l.default(o, r)), this.fastAesKey.expandKey().then(function(t) {
1736 new s.default(o, i).decrypt(e, t).catch(function(t) {
1737 a.onWebCryptoError(t, e, r, i, n)
1738 }).then(function(t) {
1739 n(t)
1740 })
1741 }).catch(function(t) {
1742 a.onWebCryptoError(t, e, r, i, n)
1743 })
1744 }
1745 }, n.prototype.onWebCryptoError = function(t, e, r, i, n) {
1746 this.config.enableSoftwareAES ? (d.logger.log("WebCrypto Error, disable WebCrypto API"), this.disableWebCrypto = !0, this.logEnabled = !0, this.decrypt(e, r, i, n)) : (d.logger.error("decrypting error : " + t.message), this.observer.trigger(o.default.ERROR, {
1747 type: a.ErrorTypes.MEDIA_ERROR,
1748 details: a.ErrorDetails.FRAG_DECRYPT_ERROR,
1749 fatal: !0,
1750 reason: t.message
1751 }))
1752 }, n.prototype.destroy = function() {
1753 var t = this.decryptor;
1754 t && (t.destroy(), this.decryptor = void 0)
1755 }, n);
1756
1757 function n(t, e, r) {
1758 var i = (void 0 === r ? {} : r).removePKCS7Padding,
1759 n = void 0 === i || i;
1760 if (this.logEnabled = !0, this.observer = t, this.config = e, this.removePKCS7Padding = n) try {
1761 var a = c.crypto;
1762 a && (this.subtle = a.subtle || a.webkitSubtle)
1763 } catch (t) {}
1764 this.disableWebCrypto = !this.subtle
1765 }
1766 e.default = i
1767 },
1768 "./src/crypt/aes-decryptor.js": function(t, e, r) {
1769 "use strict";
1770
1771 function x(t) {
1772 var e = t.byteLength,
1773 r = e && new DataView(t).getUint8(e - 1);
1774 return r ? t.slice(0, e - r) : t
1775 }
1776 Object.defineProperty(e, "__esModule", {
1777 value: !0
1778 }), e.removePadding = x;
1779 var i = (n.prototype.uint8ArrayToUint32Array_ = function(t) {
1780 for (var e = new DataView(t), r = new Uint32Array(4), i = 0; i < 4; i++) r[i] = e.getUint32(4 * i);
1781 return r
1782 }, n.prototype.initTable = function() {
1783 var t = this.sBox,
1784 e = this.invSBox,
1785 r = this.subMix,
1786 i = r[0],
1787 n = r[1],
1788 a = r[2],
1789 o = r[3],
1790 s = this.invSubMix,
1791 l = s[0],
1792 u = s[1],
1793 d = s[2],
1794 c = s[3],
1795 f = new Uint32Array(256),
1796 h = 0,
1797 p = 0,
1798 g = 0;
1799 for (g = 0; g < 256; g++) f[g] = g < 128 ? g << 1 : g << 1 ^ 283;
1800 for (g = 0; g < 256; g++) {
1801 var m = p ^ p << 1 ^ p << 2 ^ p << 3 ^ p << 4;
1802 m = m >>> 8 ^ 255 & m ^ 99;
1803 var y = f[e[t[h] = m] = h],
1804 v = f[y],
1805 A = f[v],
1806 _ = 257 * f[m] ^ 16843008 * m;
1807 i[h] = _ << 24 | _ >>> 8, n[h] = _ << 16 | _ >>> 16, a[h] = _ << 8 | _ >>> 24, o[h] = _, _ = 16843009 * A ^ 65537 * v ^ 257 * y ^ 16843008 * h, l[m] = _ << 24 | _ >>> 8, u[m] = _ << 16 | _ >>> 16, d[m] = _ << 8 | _ >>> 24, c[m] = _, h ? (h = y ^ f[f[f[A ^ y]]], p ^= f[f[p]]) : h = p = 1
1808 }
1809 }, n.prototype.expandKey = function(t) {
1810 for (var e = this.uint8ArrayToUint32Array_(t), r = !0, i = 0; i < e.length && r;) r = e[i] === this.key[i], i++;
1811 if (!r) {
1812 this.key = e;
1813 var n = this.keySize = e.length;
1814 if (4 !== n && 6 !== n && 8 !== n) throw new Error("Invalid aes key size=" + n);
1815 var a, o, s, l, u = this.ksRows = 4 * (n + 6 + 1),
1816 d = this.keySchedule = new Uint32Array(u),
1817 c = this.invKeySchedule = new Uint32Array(u),
1818 f = this.sBox,
1819 h = this.rcon,
1820 p = this.invSubMix,
1821 g = p[0],
1822 m = p[1],
1823 y = p[2],
1824 v = p[3];
1825 for (a = 0; a < u; a++) a < n ? s = d[a] = e[a] : (l = s, a % n == 0 ? (l = f[(l = l << 8 | l >>> 24) >>> 24] << 24 | f[l >>> 16 & 255] << 16 | f[l >>> 8 & 255] << 8 | f[255 & l], l ^= h[a / n | 0] << 24) : 6 < n && a % n == 4 && (l = f[l >>> 24] << 24 | f[l >>> 16 & 255] << 16 | f[l >>> 8 & 255] << 8 | f[255 & l]), d[a] = s = (d[a - n] ^ l) >>> 0);
1826 for (o = 0; o < u; o++) a = u - o, l = 3 & o ? d[a] : d[a - 4], c[o] = o < 4 || a <= 4 ? l : g[f[l >>> 24]] ^ m[f[l >>> 16 & 255]] ^ y[f[l >>> 8 & 255]] ^ v[f[255 & l]], c[o] = c[o] >>> 0
1827 }
1828 }, n.prototype.networkToHostOrderSwap = function(t) {
1829 return t << 24 | (65280 & t) << 8 | (16711680 & t) >> 8 | t >>> 24
1830 }, n.prototype.decrypt = function(t, e, r, i) {
1831 for (var n, a, o, s, l, u, d, c, f, h, p, g, m, y, v = this.keySize + 6, A = this.invKeySchedule, _ = this.invSBox, b = this.invSubMix, E = b[0], T = b[1], S = b[2], k = b[3], L = this.uint8ArrayToUint32Array_(r), R = L[0], C = L[1], w = L[2], P = L[3], O = new Int32Array(t), I = new Int32Array(O.length), D = this.networkToHostOrderSwap; e < O.length;) {
1832 for (f = D(O[e]), h = D(O[e + 1]), p = D(O[e + 2]), g = D(O[e + 3]), l = f ^ A[0], u = g ^ A[1], d = p ^ A[2], c = h ^ A[3], m = 4, y = 1; y < v; y++) n = E[l >>> 24] ^ T[u >> 16 & 255] ^ S[d >> 8 & 255] ^ k[255 & c] ^ A[m], a = E[u >>> 24] ^ T[d >> 16 & 255] ^ S[c >> 8 & 255] ^ k[255 & l] ^ A[m + 1], o = E[d >>> 24] ^ T[c >> 16 & 255] ^ S[l >> 8 & 255] ^ k[255 & u] ^ A[m + 2], s = E[c >>> 24] ^ T[l >> 16 & 255] ^ S[u >> 8 & 255] ^ k[255 & d] ^ A[m + 3], l = n, u = a, d = o, c = s, m += 4;
1833 n = _[l >>> 24] << 24 ^ _[u >> 16 & 255] << 16 ^ _[d >> 8 & 255] << 8 ^ _[255 & c] ^ A[m], a = _[u >>> 24] << 24 ^ _[d >> 16 & 255] << 16 ^ _[c >> 8 & 255] << 8 ^ _[255 & l] ^ A[m + 1], o = _[d >>> 24] << 24 ^ _[c >> 16 & 255] << 16 ^ _[l >> 8 & 255] << 8 ^ _[255 & u] ^ A[m + 2], s = _[c >>> 24] << 24 ^ _[l >> 16 & 255] << 16 ^ _[u >> 8 & 255] << 8 ^ _[255 & d] ^ A[m + 3], m += 3, I[e] = D(n ^ R), I[e + 1] = D(s ^ C), I[e + 2] = D(o ^ w), I[e + 3] = D(a ^ P), R = f, C = h, w = p, P = g, e += 4
1834 }
1835 return i ? x(I.buffer) : I.buffer
1836 }, n.prototype.destroy = function() {
1837 this.key = void 0, this.keySize = void 0, this.ksRows = void 0, this.sBox = void 0, this.invSBox = void 0, this.subMix = void 0, this.invSubMix = void 0, this.keySchedule = void 0, this.invKeySchedule = void 0, this.rcon = void 0
1838 }, n);
1839
1840 function n() {
1841 this.rcon = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], this.subMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)], this.invSubMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)], this.sBox = new Uint32Array(256), this.invSBox = new Uint32Array(256), this.key = new Uint32Array(0), this.initTable()
1842 }
1843 e.default = i
1844 },
1845 "./src/crypt/fast-aes-key.js": function(t, e, r) {
1846 "use strict";
1847 Object.defineProperty(e, "__esModule", {
1848 value: !0
1849 });
1850 var i = (n.prototype.expandKey = function() {
1851 return this.subtle.importKey("raw", this.key, {
1852 name: "AES-CBC"
1853 }, !1, ["encrypt", "decrypt"])
1854 }, n);
1855
1856 function n(t, e) {
1857 this.subtle = t, this.key = e
1858 }
1859 e.default = i
1860 },
1861 "./src/crypt/aes-crypto.js": function(t, e, r) {
1862 "use strict";
1863 Object.defineProperty(e, "__esModule", {
1864 value: !0
1865 });
1866 var i = (n.prototype.decrypt = function(t, e) {
1867 return this.subtle.decrypt({
1868 name: "AES-CBC",
1869 iv: this.aesIV
1870 }, e, t)
1871 }, n);
1872
1873 function n(t, e) {
1874 this.subtle = t, this.aesIV = e
1875 }
1876 e.default = i
1877 },
1878 "./src/demux/exp-golomb.js": function(t, e, r) {
1879 "use strict";
1880 Object.defineProperty(e, "__esModule", {
1881 value: !0
1882 });
1883 var i = r("./src/utils/logger.js"),
1884 n = (a.prototype.loadWord = function() {
1885 var t = this.data,
1886 e = this.bytesAvailable,
1887 r = t.byteLength - e,
1888 i = new Uint8Array(4),
1889 n = Math.min(4, e);
1890 if (0 === n) throw new Error("no bytes available");
1891 i.set(t.subarray(r, r + n)), this.word = new DataView(i.buffer).getUint32(0), this.bitsAvailable = 8 * n, this.bytesAvailable -= n
1892 }, a.prototype.skipBits = function(t) {
1893 var e;
1894 this.bitsAvailable > t || (t -= this.bitsAvailable, t -= (e = t >> 3) >> 3, this.bytesAvailable -= e, this.loadWord()), this.word <<= t, this.bitsAvailable -= t
1895 }, a.prototype.readBits = function(t) {
1896 var e = Math.min(this.bitsAvailable, t),
1897 r = this.word >>> 32 - e;
1898 return 32 < t && i.logger.error("Cannot read more than 32 bits at a time"), this.bitsAvailable -= e, 0 < this.bitsAvailable ? this.word <<= e : 0 < this.bytesAvailable && this.loadWord(), 0 < (e = t - e) && this.bitsAvailable ? r << e | this.readBits(e) : r
1899 }, a.prototype.skipLZ = function() {
1900 var t;
1901 for (t = 0; t < this.bitsAvailable; ++t)
1902 if (0 != (this.word & 2147483648 >>> t)) return this.word <<= t, this.bitsAvailable -= t, t;
1903 return this.loadWord(), t + this.skipLZ()
1904 }, a.prototype.skipUEG = function() {
1905 this.skipBits(1 + this.skipLZ())
1906 }, a.prototype.skipEG = function() {
1907 this.skipBits(1 + this.skipLZ())
1908 }, a.prototype.readUEG = function() {
1909 var t = this.skipLZ();
1910 return this.readBits(t + 1) - 1
1911 }, a.prototype.readEG = function() {
1912 var t = this.readUEG();
1913 return 1 & t ? 1 + t >>> 1 : -1 * (t >>> 1)
1914 }, a.prototype.readBoolean = function() {
1915 return 1 === this.readBits(1)
1916 }, a.prototype.readUByte = function() {
1917 return this.readBits(8)
1918 }, a.prototype.readUShort = function() {
1919 return this.readBits(16)
1920 }, a.prototype.readUInt = function() {
1921 return this.readBits(32)
1922 }, a.prototype.skipScalingList = function(t) {
1923 var e, r = 8,
1924 i = 8;
1925 for (e = 0; e < t; e++) 0 !== i && (i = (r + this.readEG() + 256) % 256), r = 0 === i ? r : i
1926 }, a.prototype.readSPS = function() {
1927 var t, e, r, i, n, a, o, s = 0,
1928 l = 0,
1929 u = 0,
1930 d = 0,
1931 c = this.readUByte.bind(this),
1932 f = this.readBits.bind(this),
1933 h = this.readUEG.bind(this),
1934 p = this.readBoolean.bind(this),
1935 g = this.skipBits.bind(this),
1936 m = this.skipEG.bind(this),
1937 y = this.skipUEG.bind(this),
1938 v = this.skipScalingList.bind(this);
1939 if (c(), t = c(), f(5), g(3), c(), y(), 100 === t || 110 === t || 122 === t || 244 === t || 44 === t || 83 === t || 86 === t || 118 === t || 128 === t) {
1940 var A = h();
1941 if (3 === A && g(1), y(), y(), g(1), p())
1942 for (a = 3 !== A ? 8 : 12, o = 0; o < a; o++) p() && v(o < 6 ? 16 : 64)
1943 }
1944 y();
1945 var _ = h();
1946 if (0 === _) h();
1947 else if (1 === _)
1948 for (g(1), m(), m(), e = h(), o = 0; o < e; o++) m();
1949 y(), g(1), r = h(), i = h(), 0 === (n = f(1)) && g(1), g(1), p() && (s = h(), l = h(), u = h(), d = h());
1950 var b = [1, 1];
1951 if (p() && p()) switch (c()) {
1952 case 1:
1953 b = [1, 1];
1954 break;
1955 case 2:
1956 b = [12, 11];
1957 break;
1958 case 3:
1959 b = [10, 11];
1960 break;
1961 case 4:
1962 b = [16, 11];
1963 break;
1964 case 5:
1965 b = [40, 33];
1966 break;
1967 case 6:
1968 b = [24, 11];
1969 break;
1970 case 7:
1971 b = [20, 11];
1972 break;
1973 case 8:
1974 b = [32, 11];
1975 break;
1976 case 9:
1977 b = [80, 33];
1978 break;
1979 case 10:
1980 b = [18, 11];
1981 break;
1982 case 11:
1983 b = [15, 11];
1984 break;
1985 case 12:
1986 b = [64, 33];
1987 break;
1988 case 13:
1989 b = [160, 99];
1990 break;
1991 case 14:
1992 b = [4, 3];
1993 break;
1994 case 15:
1995 b = [3, 2];
1996 break;
1997 case 16:
1998 b = [2, 1];
1999 break;
2000 case 255:
2001 b = [c() << 8 | c(), c() << 8 | c()]
2002 }
2003 return {
2004 width: Math.ceil(16 * (r + 1) - 2 * s - 2 * l),
2005 height: (2 - n) * (i + 1) * 16 - (n ? 2 : 4) * (u + d),
2006 pixelRatio: b
2007 }
2008 }, a.prototype.readSliceType = function() {
2009 return this.readUByte(), this.readUEG(), this.readUEG()
2010 }, a);
2011
2012 function a(t) {
2013 this.data = t, this.bytesAvailable = t.byteLength, this.word = 0, this.bitsAvailable = 0
2014 }
2015 e.default = n
2016 },
2017 "./src/demux/adts.js": function(t, e, r) {
2018 "use strict";
2019 Object.defineProperty(e, "__esModule", {
2020 value: !0
2021 });
2022 var f = r("./src/utils/logger.js"),
2023 h = r("./src/errors.js"),
2024 p = r("./src/events.js");
2025
2026 function o(t, e, r, i) {
2027 var n, a, o, s, l, u = navigator.userAgent.toLowerCase(),
2028 d = i,
2029 c = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350];
2030 if (n = 1 + ((192 & e[r + 2]) >>> 6), a = (60 & e[r + 2]) >>> 2, !(c.length - 1 < a)) return s = (1 & e[r + 2]) << 2, s |= (192 & e[r + 3]) >>> 6, f.logger.log("manifest codec:" + i + ",ADTS data:type:" + n + ",sampleingIndex:" + a + "[" + c[a] + "Hz],channelConfig:" + s), o = /firefox/i.test(u) ? 6 <= a ? (n = 5, l = new Array(4), a - 3) : (n = 2, l = new Array(2), a) : -1 !== u.indexOf("android") ? (n = 2, l = new Array(2), a) : (n = 5, l = new Array(4), i && (-1 !== i.indexOf("mp4a.40.29") || -1 !== i.indexOf("mp4a.40.5")) || !i && 6 <= a ? a - 3 : ((i && -1 !== i.indexOf("mp4a.40.2") && (6 <= a && 1 == s || /vivaldi/i.test(u)) || !i && 1 == s) && (n = 2, l = new Array(2)), a)), l[0] = n << 3, l[0] |= (14 & a) >> 1, l[1] |= (1 & a) << 7, l[1] |= s << 3, 5 === n && (l[1] |= (14 & o) >> 1, l[2] = (1 & o) << 7, l[2] |= 8, l[3] = 0), {
2031 config: l,
2032 samplerate: c[a],
2033 channelCount: s,
2034 codec: "mp4a.40." + n,
2035 manifestCodec: d
2036 };
2037 t.trigger(p.default.ERROR, {
2038 type: h.ErrorTypes.MEDIA_ERROR,
2039 details: h.ErrorDetails.FRAG_PARSING_ERROR,
2040 fatal: !0,
2041 reason: "invalid ADTS sampling index:" + a
2042 })
2043 }
2044
2045 function n(t, e) {
2046 return 255 === t[e] && 240 == (246 & t[e + 1])
2047 }
2048
2049 function l(t, e) {
2050 return 1 & t[e + 1] ? 7 : 9
2051 }
2052
2053 function u(t, e) {
2054 return (3 & t[e + 3]) << 11 | t[e + 4] << 3 | (224 & t[e + 5]) >>> 5
2055 }
2056
2057 function d(t) {
2058 return 9216e4 / t
2059 }
2060
2061 function c(t, e, r, i, n) {
2062 var a, o, s = t.length;
2063 if (a = l(t, e), o = u(t, e), 0 < (o -= a) && e + a + o <= s) return {
2064 headerLength: a,
2065 frameLength: o,
2066 stamp: r + i * n
2067 }
2068 }
2069 e.getAudioConfig = o, e.isHeaderPattern = n, e.getHeaderLength = l, e.getFullFrameLength = u, e.isHeader = function(t, e) {
2070 return !!(e + 1 < t.length && n(t, e))
2071 }, e.probe = function(t, e) {
2072 if (e + 1 < t.length && n(t, e)) {
2073 var r = l(t, e);
2074 e + 5 < t.length && (r = u(t, e));
2075 var i = e + r;
2076 if (i === t.length || i + 1 < t.length && n(t, i)) return !0
2077 }
2078 return !1
2079 }, e.initTrackConfig = function(t, e, r, i, n) {
2080 if (!t.samplerate) {
2081 var a = o(e, r, i, n);
2082 t.config = a.config, t.samplerate = a.samplerate, t.channelCount = a.channelCount, t.codec = a.codec, t.manifestCodec = a.manifestCodec, f.logger.log("parsed codec:" + t.codec + ",rate:" + a.samplerate + ",nb channel:" + a.channelCount)
2083 }
2084 }, e.getFrameDuration = d, e.parseFrameHeader = c, e.appendFrame = function(t, e, r, i, n) {
2085 var a = c(e, r, i, n, d(t.samplerate));
2086 if (a) {
2087 var o = a.stamp,
2088 s = a.headerLength,
2089 l = a.frameLength,
2090 u = {
2091 unit: e.subarray(r + s, r + s + l),
2092 pts: o,
2093 dts: o
2094 };
2095 return t.samples.push(u), t.len += l, {
2096 sample: u,
2097 length: l + s
2098 }
2099 }
2100 }
2101 },
2102 "./src/demux/mp4demuxer.js": function(t, e, r) {
2103 "use strict";
2104 Object.defineProperty(e, "__esModule", {
2105 value: !0
2106 });
2107 var f = r("./src/utils/logger.js"),
2108 l = r("./src/events.js"),
2109 s = Math.pow(2, 32) - 1,
2110 i = (g.prototype.resetTimeStamp = function(t) {
2111 this.initPTS = t
2112 }, g.prototype.resetInitSegment = function(t, e, r, i) {
2113 if (t && t.byteLength) {
2114 var n = this.initData = g.parseInitSegment(t);
2115 null == e && (e = "mp4a.40.5"), null == r && (r = "avc1.42e01e");
2116 var a = {};
2117 n.audio && n.video ? a.audiovideo = {
2118 container: "video/mp4",
2119 codec: e + "," + r,
2120 initSegment: i ? t : null
2121 } : (n.audio && (a.audio = {
2122 container: "audio/mp4",
2123 codec: e,
2124 initSegment: i ? t : null
2125 }), n.video && (a.video = {
2126 container: "video/mp4",
2127 codec: r,
2128 initSegment: i ? t : null
2129 })), this.observer.trigger(l.default.FRAG_PARSING_INIT_SEGMENT, {
2130 tracks: a
2131 })
2132 } else e && (this.audioCodec = e), r && (this.videoCodec = r)
2133 }, g.probe = function(t) {
2134 return 0 < g.findBox({
2135 data: t,
2136 start: 0,
2137 end: Math.min(t.length, 16384)
2138 }, ["moof"]).length
2139 }, g.bin2str = function(t) {
2140 return String.fromCharCode.apply(null, t)
2141 }, g.readUint16 = function(t, e) {
2142 t.data && (e += t.start, t = t.data);
2143 var r = t[e] << 8 | t[e + 1];
2144 return r < 0 ? 65536 + r : r
2145 }, g.readUint32 = function(t, e) {
2146 t.data && (e += t.start, t = t.data);
2147 var r = t[e] << 24 | t[e + 1] << 16 | t[e + 2] << 8 | t[e + 3];
2148 return r < 0 ? 4294967296 + r : r
2149 }, g.writeUint32 = function(t, e, r) {
2150 t.data && (e += t.start, t = t.data), t[e] = r >> 24, t[e + 1] = r >> 16 & 255, t[e + 2] = r >> 8 & 255, t[e + 3] = 255 & r
2151 }, g.findBox = function(t, e) {
2152 var r, i, n, a, o, s, l = [];
2153 if (t.data ? (o = t.start, n = t.end, t = t.data) : (o = 0, n = t.byteLength), !e.length) return null;
2154 for (r = o; r < n;) s = 1 < (i = g.readUint32(t, r)) ? r + i : n, g.bin2str(t.subarray(r + 4, r + 8)) === e[0] && (1 === e.length ? l.push({
2155 data: t,
2156 start: r + 8,
2157 end: s
2158 }) : (a = g.findBox({
2159 data: t,
2160 start: r + 8,
2161 end: s
2162 }, e.slice(1))).length && (l = l.concat(a))), r = s;
2163 return l
2164 }, g.parseSegmentIndex = function(t) {
2165 var e, r = g.findBox(t, ["moov"])[0],
2166 i = r ? r.end : null,
2167 n = 0,
2168 a = g.findBox(t, ["sidx"]);
2169 if (!a || !a[0]) return null;
2170 e = [];
2171 var o = (a = a[0]).data[0],
2172 s = g.readUint32(a, n = 0 === o ? 8 : 16);
2173 n += 4, n += 0 === o ? 8 : 16, n += 2;
2174 var l = a.end + 0,
2175 u = g.readUint16(a, n);
2176 n += 2;
2177 for (var d = 0; d < u; d++) {
2178 var c = n,
2179 f = g.readUint32(a, c);
2180 c += 4;
2181 var h = 2147483647 & f;
2182 if (1 == (2147483648 & f) >>> 31) return void console.warn("SIDX has hierarchical references (not supported)");
2183 var p = g.readUint32(a, c);
2184 c += 4, e.push({
2185 referenceSize: h,
2186 subsegmentDuration: p,
2187 info: {
2188 duration: p / s,
2189 start: l,
2190 end: l + h - 1
2191 }
2192 }), l += h, n = c += 4
2193 }
2194 return {
2195 earliestPresentationTime: 0,
2196 timescale: s,
2197 version: o,
2198 referencesCount: u,
2199 references: e,
2200 moovEndOffset: i
2201 }
2202 }, g.parseInitSegment = function(t) {
2203 var c = [];
2204 return g.findBox(t, ["moov", "trak"]).forEach(function(t) {
2205 var e = g.findBox(t, ["tkhd"])[0];
2206 if (e) {
2207 var r = e.data[e.start],
2208 i = 0 === r ? 12 : 20,
2209 n = g.readUint32(e, i),
2210 a = g.findBox(t, ["mdia", "mdhd"])[0];
2211 if (a) {
2212 r = a.data[a.start];
2213 var o = g.readUint32(a, i = 0 === r ? 12 : 20),
2214 s = g.findBox(t, ["mdia", "hdlr"])[0];
2215 if (s) {
2216 var l = {
2217 soun: "audio",
2218 vide: "video"
2219 } [g.bin2str(s.data.subarray(s.start + 8, s.start + 12))];
2220 if (l) {
2221 var u = g.findBox(t, ["mdia", "minf", "stbl", "stsd"]);
2222 if (u.length) {
2223 u = u[0];
2224 var d = g.bin2str(u.data.subarray(u.start + 12, u.start + 16));
2225 f.logger.log("MP4Demuxer:" + l + ":" + d + " found")
2226 }
2227 c[n] = {
2228 timescale: o,
2229 type: l
2230 }, c[l] = {
2231 timescale: o,
2232 id: n
2233 }
2234 }
2235 }
2236 }
2237 }
2238 }), c
2239 }, g.getStartDTS = function(n, t) {
2240 var e, r, i;
2241 return e = g.findBox(t, ["moof", "traf"]), r = [].concat.apply([], e.map(function(i) {
2242 return g.findBox(i, ["tfhd"]).map(function(t) {
2243 var e, r;
2244 return e = g.readUint32(t, 4), r = n[e].timescale || 9e4, g.findBox(i, ["tfdt"]).map(function(t) {
2245 var e, r;
2246 return e = t.data[t.start], r = g.readUint32(t, 4), 1 === e && (r *= Math.pow(2, 32), r += g.readUint32(t, 8)), r
2247 })[0] / r
2248 })
2249 })), i = Math.min.apply(null, r), isFinite(i) ? i : 0
2250 }, g.offsetStartDTS = function(i, t, o) {
2251 g.findBox(t, ["moof", "traf"]).map(function(r) {
2252 return g.findBox(r, ["tfhd"]).map(function(t) {
2253 var e = g.readUint32(t, 4),
2254 a = i[e].timescale || 9e4;
2255 g.findBox(r, ["tfdt"]).map(function(t) {
2256 var e = t.data[t.start],
2257 r = g.readUint32(t, 4);
2258 if (0 === e) g.writeUint32(t, 4, r - o * a);
2259 else {
2260 r *= Math.pow(2, 32), r += g.readUint32(t, 8), r -= o * a, r = Math.max(r, 0);
2261 var i = Math.floor(r / (1 + s)),
2262 n = Math.floor(r % (1 + s));
2263 g.writeUint32(t, 4, i), g.writeUint32(t, 8, n)
2264 }
2265 })
2266 })
2267 })
2268 }, g.prototype.append = function(t, e, r, i) {
2269 var n = this.initData;
2270 n || (this.resetInitSegment(t, this.audioCodec, this.videoCodec, !1), n = this.initData);
2271 var a, o = this.initPTS;
2272 if (void 0 === o) {
2273 var s = g.getStartDTS(n, t);
2274 this.initPTS = o = s - e, this.observer.trigger(l.default.INIT_PTS_FOUND, {
2275 initPTS: o
2276 })
2277 }
2278 g.offsetStartDTS(n, t, o), a = g.getStartDTS(n, t), this.remuxer.remux(n.audio, n.video, null, null, a, r, i, t)
2279 }, g.prototype.destroy = function() {}, g);
2280
2281 function g(t, e) {
2282 this.observer = t, this.remuxer = e
2283 }
2284 e.default = i
2285 },
2286 "./src/demux/aacdemuxer.js": function(t, r, i) {
2287 "use strict";
2288 (function(p) {
2289 Object.defineProperty(r, "__esModule", {
2290 value: !0
2291 });
2292 var g = i("./src/demux/adts.js"),
2293 m = i("./src/utils/logger.js"),
2294 y = i("./src/demux/id3.js"),
2295 t = (e.prototype.resetInitSegment = function(t, e, r, i) {
2296 this._audioTrack = {
2297 container: "audio/adts",
2298 type: "audio",
2299 id: 0,
2300 sequenceNumber: 0,
2301 isAAC: !0,
2302 samples: [],
2303 len: 0,
2304 manifestCodec: e,
2305 duration: i,
2306 inputTimeScale: 9e4
2307 }
2308 }, e.prototype.resetTimeStamp = function() {}, e.probe = function(t) {
2309 if (!t) return !1;
2310 for (var e = (y.default.getID3Data(t, 0) || []).length, r = t.length; e < r; e++)
2311 if (g.probe(t, e)) return m.logger.log("ADTS sync word found !"), !0;
2312 return !1
2313 }, e.prototype.append = function(t, e, r, i) {
2314 for (var n = this._audioTrack, a = y.default.getID3Data(t, 0) || [], o = y.default.getTimeStamp(a), s = p.isFinite(o) ? 90 * o : 9e4 * e, l = 0, u = s, d = t.length, c = a.length, f = [{
2315 pts: u,
2316 dts: u,
2317 data: a
2318 }]; c < d - 1;)
2319 if (g.isHeader(t, c) && c + 5 < d) {
2320 g.initTrackConfig(n, this.observer, t, c, n.manifestCodec);
2321 var h = g.appendFrame(n, t, c, s, l);
2322 if (!h) {
2323 m.logger.log("Unable to parse AAC frame");
2324 break
2325 }
2326 c += h.length, u = h.sample.pts, l++
2327 } else y.default.isHeader(t, c) ? (a = y.default.getID3Data(t, c), f.push({
2328 pts: u,
2329 dts: u,
2330 data: a
2331 }), c += a.length) : c++;
2332 this.remuxer.remux(n, {
2333 samples: []
2334 }, {
2335 samples: f,
2336 inputTimeScale: 9e4
2337 }, {
2338 samples: []
2339 }, e, r, i)
2340 }, e.prototype.destroy = function() {}, e);
2341
2342 function e(t, e, r) {
2343 this.observer = t, this.config = r, this.remuxer = e
2344 }
2345 r.default = t
2346 }).call(this, i("./src/polyfills/number.js").Number)
2347 },
2348 "./src/polyfills/number.js": function(t, e, r) {
2349 "use strict";
2350 Object.defineProperty(e, "__esModule", {
2351 value: !0
2352 });
2353 var i = r("./src/utils/get-self-scope.js").getSelfScope().Number;
2354 (e.Number = i).isFinite = i.isFinite || function(t) {
2355 return "number" == typeof t && isFinite(t)
2356 }
2357 }
2358}))(self);