cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
890 lines (889 loc) • 1.18 MB
JavaScript
import { getDefaultExportFromCjs } from "../../../_virtual/_commonjsHelpers.mjs";
import { d as dist$1 } from "../../../_virtual/index3.mjs";
import "../../xgplayer/dist/index.mjs";
import { d as dist } from "../../../_virtual/index.mjs";
(function(module, exports) {
(function webpackUniversalModuleDefinition(root, factory) {
module.exports = factory(dist.exports);
})(window, function(__WEBPACK_EXTERNAL_MODULE__2__) {
return function(modules2) {
var installedModules = {};
function __webpack_require__(moduleId) {
if (installedModules[moduleId]) {
return installedModules[moduleId].exports;
}
var module2 = installedModules[moduleId] = {
i: moduleId,
l: false,
exports: {}
};
modules2[moduleId].call(module2.exports, module2, module2.exports, __webpack_require__);
module2.l = true;
return module2.exports;
}
__webpack_require__.m = modules2;
__webpack_require__.c = installedModules;
__webpack_require__.d = function(exports2, name, getter) {
if (!__webpack_require__.o(exports2, name)) {
Object.defineProperty(exports2, name, { enumerable: true, get: getter });
}
};
__webpack_require__.r = function(exports2) {
if (typeof Symbol !== "undefined" && Symbol.toStringTag) {
Object.defineProperty(exports2, Symbol.toStringTag, { value: "Module" });
}
Object.defineProperty(exports2, "__esModule", { value: true });
};
__webpack_require__.t = function(value, mode) {
if (mode & 1)
value = __webpack_require__(value);
if (mode & 8)
return value;
if (mode & 4 && typeof value === "object" && value && value.__esModule)
return value;
var ns = /* @__PURE__ */ Object.create(null);
__webpack_require__.r(ns);
Object.defineProperty(ns, "default", { enumerable: true, value });
if (mode & 2 && typeof value != "string")
for (var key in value)
__webpack_require__.d(ns, key, function(key2) {
return value[key2];
}.bind(null, key));
return ns;
};
__webpack_require__.n = function(module2) {
var getter = module2 && module2.__esModule ? function getDefault() {
return module2["default"];
} : function getModuleExports() {
return module2;
};
__webpack_require__.d(getter, "a", getter);
return getter;
};
__webpack_require__.o = function(object, property) {
return Object.prototype.hasOwnProperty.call(object, property);
};
__webpack_require__.p = "";
return __webpack_require__(__webpack_require__.s = 0);
}([
function(module2, exports2, __webpack_require__) {
module2.exports = __webpack_require__(1);
},
function(module2, exports2, __webpack_require__) {
Object.defineProperty(exports2, "__esModule", {
value: true
});
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) {
return typeof obj;
} : function(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
var _createClass = function() {
function defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor)
descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
return function(Constructor, protoProps, staticProps) {
if (protoProps)
defineProperties(Constructor.prototype, protoProps);
if (staticProps)
defineProperties(Constructor, staticProps);
return Constructor;
};
}();
var _get = function get(object, property, receiver) {
if (object === null)
object = Function.prototype;
var desc = Object.getOwnPropertyDescriptor(object, property);
if (desc === void 0) {
var parent = Object.getPrototypeOf(object);
if (parent === null) {
return void 0;
} else {
return get(parent, property, receiver);
}
} else if ("value" in desc) {
return desc.value;
} else {
var getter = desc.get;
if (getter === void 0) {
return void 0;
}
return getter.call(receiver);
}
};
var _xgplayer = __webpack_require__(2);
var _xgplayer2 = _interopRequireDefault(_xgplayer);
var _hls = __webpack_require__(3);
var _hls2 = _interopRequireDefault(_hls);
var _utils = __webpack_require__(4);
var _utils2 = _interopRequireDefault(_utils);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : { default: obj };
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
function _possibleConstructorReturn(self2, call) {
if (!self2) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return call && (typeof call === "object" || typeof call === "function") ? call : self2;
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
}
subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });
if (superClass)
Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
}
var HlsJsPlayer = function(_Player) {
_inherits(HlsJsPlayer2, _Player);
function HlsJsPlayer2(options) {
_classCallCheck(this, HlsJsPlayer2);
var _this = _possibleConstructorReturn(this, (HlsJsPlayer2.__proto__ || Object.getPrototypeOf(HlsJsPlayer2)).call(this, options));
_this.hlsOpts = options.hlsOpts || {};
_this.hlsOpts.mediaType = _this.config.mediaType;
var util = _xgplayer2.default.util;
var player = _this;
player.once("complete", function() {
if (player.config.isLive) {
util.addClass(player.root, "xgplayer-is-live");
if (!util.findDom(player.controls, ".xgplayer-live")) {
var live = util.createDom("xg-live", player.lang.LIVE || "\u6B63\u5728\u76F4\u64AD", {}, "xgplayer-live");
player.controls.appendChild(live);
}
}
});
_this.browser = _utils2.default.getBrowserVersion();
if (player.config.useHls === void 0) {
if (_xgplayer2.default.sniffer.device === "mobile" && navigator.platform !== "MacIntel" && navigator.platform !== "Win32" || _this.browser.indexOf("Safari") > -1) {
return _possibleConstructorReturn(_this);
}
} else if (!player.config.useHls) {
return _possibleConstructorReturn(_this);
}
_this._start = _this.start;
_this.start = function() {
if (!window.XgVideoProxy) {
_this.root.insertBefore(_this.video, _this.root.firstChild);
}
setTimeout(function() {
_this.emit("complete");
if (_this.danmu && typeof _this.danmu.resize === "function") {
_this.danmu.resize();
}
}, 1);
};
Number.isFinite = Number.isFinite || function(value) {
return typeof value === "number" && isFinite(value);
};
var hls = void 0;
hls = new _hls2.default(_this.hlsOpts);
_this.hls = hls;
Object.defineProperty(player, "src", {
get: function get() {
return player.currentSrc;
},
set: function set(url) {
util.removeClass(player.root, "xgplayer-is-live");
var liveDom = document.querySelector(".xgplayer-live");
if (liveDom) {
liveDom.parentNode.removeChild(liveDom);
}
player.autoplay = true;
var paused = player.paused;
if (!paused) {
player.pause();
}
player.hls.stopLoad();
player.hls.detachMedia();
player.hls.destroy();
player.hls = new _hls2.default(player.hlsOpts);
player.register(url);
player.once("canplay", function() {
player.play().catch(function(err) {
});
});
player.hls.loadSource(url);
player.hls.attachMedia(player.video);
},
configurable: true
});
_this.register(_this.config.url);
_this.once("complete", function() {
hls.attachMedia(player.video);
if (!player.config.videoInit) {
player.once("canplay", function() {
player.play().catch(function(err) {
});
});
}
});
_this.once("destroy", function() {
hls.stopLoad();
});
return _this;
}
_createClass(HlsJsPlayer2, [{
key: "switchURL",
value: function switchURL(url) {
var player = this;
player.url = url;
player.config.url = url;
var curTime = player.currentTime;
_xgplayer2.default.util.addClass(player.root, "xgplayer-is-enter");
player.once("playing", function() {
_xgplayer2.default.util.removeClass(player.root, "xgplayer-is-enter");
});
player.once("canplay", function() {
player.currentTime = curTime;
player.play();
});
if (_typeof(player.hls) === "object") {
player.hls.originUrl = url;
}
player.src = url;
}
}, {
key: "register",
value: function register(url) {
var hls = this.hls;
var util = _xgplayer2.default.util;
var player = this;
hls.on(_hls2.default.Events.MEDIA_ATTACHED, function() {
hls.loadSource(url);
});
hls.on(_hls2.default.Events.LEVEL_LOADED, function(name, e) {
if (!hls.inited) {
hls.inited = true;
if (e && e.details && e.details.live) {
util.addClass(player.root, "xgplayer-is-live");
if (!util.findDom(player.root, ".xgplayer-live")) {
var live = util.createDom("xg-live", player.lang.LIVE || "\u6B63\u5728\u76F4\u64AD", {}, "xgplayer-live");
player.controls.appendChild(live);
}
}
}
});
hls.on(_hls2.default.Events.ERROR, function(event, data) {
player.emit("HLS_ERROR", {
errorType: data.type,
errorDetails: data.details,
errorFatal: data.fatal
});
if (data.fatal) {
switch (data.type) {
case _hls2.default.ErrorTypes.NETWORK_ERROR:
hls.startLoad();
break;
case _hls2.default.ErrorTypes.MEDIA_ERROR:
hls.recoverMediaError();
break;
default:
player.emit("error", data);
}
}
});
this._statistics();
}
}, {
key: "updateURLOnly",
value: function updateURLOnly(url) {
var player = this;
var levelController = player.hls.levelController;
if (Array.isArray(levelController._levels) && levelController._levels.length > 0) {
levelController._levels[0].url = [url];
}
player.config.url = url;
player.url = url;
player.hls.originUrl = url;
}
}, {
key: "_statistics",
value: function _statistics() {
var statsInfo = {
speed: 0,
playerType: "HlsPlayer"
};
var mediainfo = {
videoDataRate: 0,
audioDataRate: 0
};
var hls = this.hls;
var player = this;
hls.on(_hls2.default.Events.FRAG_LOAD_PROGRESS, function(flag, payload) {
statsInfo.speed = payload.stats.loaded / 1e3;
});
hls.on(_hls2.default.Events.FRAG_PARSING_DATA, function(flag, payload) {
if (payload.type === "video") {
mediainfo.fps = parseInt(payload.nb / (payload.endPTS - payload.startPTS));
}
});
hls.on(_hls2.default.Events.FRAG_PARSING_INIT_SEGMENT, function(flag, payload) {
mediainfo.hasAudio = payload && payload.tracks && payload.tracks.audio ? true : false;
mediainfo.hasVideo = payload && payload.tracks && payload.tracks.video ? true : false;
if (mediainfo.hasAudio && payload.tracks.audio) {
var track = payload.tracks.audio;
mediainfo.audioChannelCount = track.metadata && track.metadata.channelCount ? track.metadata.channelCount : 0;
mediainfo.audioCodec = track.codec;
}
if (mediainfo.hasVideo && payload.tracks.video) {
var _track = payload.tracks.video;
mediainfo.videoCodec = _track.codec;
mediainfo.width = _track.metadata && _track.metadata.width ? _track.metadata.width : 0;
mediainfo.height = _track.metadata && _track.metadata.height ? _track.metadata.height : 0;
}
mediainfo.duration = payload.frag && payload.frag.duration ? payload.frag.duration : 0;
mediainfo.level = payload.frag && payload.frag.level ? payload.frag.level : 0;
if (mediainfo.videoCodec || mediainfo.audioCodec) {
mediainfo.mimeType = 'video/hls; codecs="' + mediainfo.videoCodec + ";" + mediainfo.audioCodec + '"';
}
player.mediainfo = mediainfo;
player.emit("media_info", mediainfo);
});
this._statisticsTimmer = setInterval(function() {
player.emit("statistics_info", statsInfo);
statsInfo.speed = 0;
}, 1e3);
}
}, {
key: "destroy",
value: function destroy() {
clearInterval(this._statisticsTimmer);
if (this.hls) {
this.hls.destroy();
}
_get(HlsJsPlayer2.prototype.__proto__ || Object.getPrototypeOf(HlsJsPlayer2.prototype), "destroy", this).call(this);
}
}]);
return HlsJsPlayer2;
}(_xgplayer2.default);
HlsJsPlayer.isSupported = _hls2.default.isSupported;
HlsJsPlayer.HlsJs = _hls2.default;
exports2.default = HlsJsPlayer;
module2.exports = exports2["default"];
},
function(module2, exports2) {
module2.exports = __WEBPACK_EXTERNAL_MODULE__2__;
},
function(module2, exports2, __webpack_require__) {
typeof window !== "undefined" && function webpackUniversalModuleDefinition(root, factory) {
module2.exports = factory();
}(this, () => {
return (() => {
var __webpack_modules__ = {
"./src/config.ts": (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => {
__webpack_require__3.r(__webpack_exports__2);
__webpack_require__3.d(__webpack_exports__2, {
"enableStreamingMode": () => enableStreamingMode,
"hlsDefaultConfig": () => hlsDefaultConfig,
"mergeConfig": () => mergeConfig
});
var _controller_abr_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3("./src/controller/abr-controller.ts");
var _controller_audio_stream_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3("./src/controller/audio-stream-controller.ts");
var _controller_audio_track_controller__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__3("./src/controller/audio-track-controller.ts");
var _controller_subtitle_stream_controller__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__3("./src/controller/subtitle-stream-controller.ts");
var _controller_subtitle_track_controller__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__3("./src/controller/subtitle-track-controller.ts");
var _controller_buffer_controller__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__3("./src/controller/buffer-controller.ts");
var _controller_timeline_controller__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__3("./src/controller/timeline-controller.ts");
var _controller_cap_level_controller__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__3("./src/controller/cap-level-controller.ts");
var _controller_fps_controller__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__3("./src/controller/fps-controller.ts");
var _controller_eme_controller__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__3("./src/controller/eme-controller.ts");
var _controller_cmcd_controller__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__3("./src/controller/cmcd-controller.ts");
var _utils_xhr_loader__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__3("./src/utils/xhr-loader.ts");
var _utils_fetch_loader__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__3("./src/utils/fetch-loader.ts");
var _utils_cues__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__3("./src/utils/cues.ts");
var _utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__3("./src/utils/mediakeys-helper.ts");
var _utils_logger__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__3("./src/utils/logger.ts");
function _extends() {
_extends = Object.assign ? Object.assign.bind() : function(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends.apply(this, arguments);
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function(sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys(Object(source), true).forEach(function(key) {
_defineProperty(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true });
} else {
obj[key] = value;
}
return obj;
}
var hlsDefaultConfig = _objectSpread(_objectSpread({
autoStartLoad: true,
startPosition: -1,
defaultAudioCodec: void 0,
debug: false,
capLevelOnFPSDrop: false,
capLevelToPlayerSize: false,
ignoreDevicePixelRatio: false,
initialLiveManifestSize: 1,
maxBufferLength: 30,
backBufferLength: Infinity,
maxBufferSize: 60 * 1e3 * 1e3,
maxBufferHole: 0.1,
highBufferWatchdogPeriod: 2,
nudgeOffset: 0.1,
nudgeMaxRetry: 3,
maxFragLookUpTolerance: 0.25,
liveSyncDurationCount: 3,
liveMaxLatencyDurationCount: Infinity,
liveSyncDuration: void 0,
liveMaxLatencyDuration: void 0,
maxLiveSyncPlaybackRate: 1,
liveDurationInfinity: false,
liveBackBufferLength: null,
maxMaxBufferLength: 600,
enableWorker: true,
enableSoftwareAES: true,
manifestLoadingTimeOut: 1e4,
manifestLoadingMaxRetry: 1,
manifestLoadingRetryDelay: 1e3,
manifestLoadingMaxRetryTimeout: 64e3,
startLevel: void 0,
levelLoadingTimeOut: 1e4,
levelLoadingMaxRetry: 4,
levelLoadingRetryDelay: 1e3,
levelLoadingMaxRetryTimeout: 64e3,
fragLoadingTimeOut: 2e4,
fragLoadingMaxRetry: 6,
fragLoadingRetryDelay: 1e3,
fragLoadingMaxRetryTimeout: 64e3,
startFragPrefetch: false,
fpsDroppedMonitoringPeriod: 5e3,
fpsDroppedMonitoringThreshold: 0.2,
appendErrorMaxRetry: 3,
loader: _utils_xhr_loader__WEBPACK_IMPORTED_MODULE_11__["default"],
fLoader: void 0,
pLoader: void 0,
xhrSetup: void 0,
licenseXhrSetup: void 0,
licenseResponseCallback: void 0,
abrController: _controller_abr_controller__WEBPACK_IMPORTED_MODULE_0__["default"],
bufferController: _controller_buffer_controller__WEBPACK_IMPORTED_MODULE_5__["default"],
capLevelController: _controller_cap_level_controller__WEBPACK_IMPORTED_MODULE_7__["default"],
fpsController: _controller_fps_controller__WEBPACK_IMPORTED_MODULE_8__["default"],
stretchShortVideoTrack: false,
maxAudioFramesDrift: 1,
forceKeyFrameOnDiscontinuity: true,
abrEwmaFastLive: 3,
abrEwmaSlowLive: 9,
abrEwmaFastVoD: 3,
abrEwmaSlowVoD: 9,
abrEwmaDefaultEstimate: 5e5,
abrBandWidthFactor: 0.95,
abrBandWidthUpFactor: 0.7,
abrMaxWithRealBitrate: false,
maxStarvationDelay: 4,
maxLoadingDelay: 4,
minAutoBitrate: 0,
emeEnabled: false,
widevineLicenseUrl: void 0,
drmSystemOptions: {},
requestMediaKeySystemAccessFunc: _utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_14__.requestMediaKeySystemAccess,
testBandwidth: true,
progressive: false,
lowLatencyMode: true,
cmcd: void 0,
enableDateRangeMetadataCues: true,
enableEmsgMetadataCues: true,
enableID3MetadataCues: true
}, timelineConfig()), {}, {
subtitleStreamController: _controller_subtitle_stream_controller__WEBPACK_IMPORTED_MODULE_3__.SubtitleStreamController,
subtitleTrackController: _controller_subtitle_track_controller__WEBPACK_IMPORTED_MODULE_4__["default"],
timelineController: _controller_timeline_controller__WEBPACK_IMPORTED_MODULE_6__.TimelineController,
audioStreamController: _controller_audio_stream_controller__WEBPACK_IMPORTED_MODULE_1__["default"],
audioTrackController: _controller_audio_track_controller__WEBPACK_IMPORTED_MODULE_2__["default"],
emeController: _controller_eme_controller__WEBPACK_IMPORTED_MODULE_9__["default"],
cmcdController: _controller_cmcd_controller__WEBPACK_IMPORTED_MODULE_10__["default"]
});
function timelineConfig() {
return {
cueHandler: _utils_cues__WEBPACK_IMPORTED_MODULE_13__["default"],
enableWebVTT: true,
enableIMSC1: true,
enableCEA708Captions: true,
captionsTextTrack1Label: "English",
captionsTextTrack1LanguageCode: "en",
captionsTextTrack2Label: "Spanish",
captionsTextTrack2LanguageCode: "es",
captionsTextTrack3Label: "Unknown CC",
captionsTextTrack3LanguageCode: "",
captionsTextTrack4Label: "Unknown CC",
captionsTextTrack4LanguageCode: "",
renderTextTracksNatively: true
};
}
function mergeConfig(defaultConfig, userConfig) {
if ((userConfig.liveSyncDurationCount || userConfig.liveMaxLatencyDurationCount) && (userConfig.liveSyncDuration || userConfig.liveMaxLatencyDuration)) {
throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");
}
if (userConfig.liveMaxLatencyDurationCount !== void 0 && (userConfig.liveSyncDurationCount === void 0 || userConfig.liveMaxLatencyDurationCount <= userConfig.liveSyncDurationCount)) {
throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');
}
if (userConfig.liveMaxLatencyDuration !== void 0 && (userConfig.liveSyncDuration === void 0 || userConfig.liveMaxLatencyDuration <= userConfig.liveSyncDuration)) {
throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');
}
return _extends({}, defaultConfig, userConfig);
}
function enableStreamingMode(config) {
var currentLoader = config.loader;
if (currentLoader !== _utils_fetch_loader__WEBPACK_IMPORTED_MODULE_12__["default"] && currentLoader !== _utils_xhr_loader__WEBPACK_IMPORTED_MODULE_11__["default"]) {
_utils_logger__WEBPACK_IMPORTED_MODULE_15__.logger.log("[config]: Custom loader detected, cannot enable progressive streaming");
config.progressive = false;
} else {
var canStreamProgressively = (0, _utils_fetch_loader__WEBPACK_IMPORTED_MODULE_12__.fetchSupported)();
if (canStreamProgressively) {
config.loader = _utils_fetch_loader__WEBPACK_IMPORTED_MODULE_12__["default"];
config.progressive = true;
config.enableSoftwareAES = true;
_utils_logger__WEBPACK_IMPORTED_MODULE_15__.logger.log("[config]: Progressive streaming enabled, using FetchLoader");
}
}
}
},
"./src/controller/abr-controller.ts": (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => {
__webpack_require__3.r(__webpack_exports__2);
__webpack_require__3.d(__webpack_exports__2, {
"default": () => __WEBPACK_DEFAULT_EXPORT__
});
var _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3("./src/polyfills/number.ts");
var _utils_ewma_bandwidth_estimator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3("./src/utils/ewma-bandwidth-estimator.ts");
var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__3("./src/events.ts");
var _errors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__3("./src/errors.ts");
var _types_loader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__3("./src/types/loader.ts");
var _utils_logger__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__3("./src/utils/logger.ts");
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor)
descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps)
_defineProperties(Constructor.prototype, protoProps);
if (staticProps)
_defineProperties(Constructor, staticProps);
Object.defineProperty(Constructor, "prototype", { writable: false });
return Constructor;
}
var AbrController = /* @__PURE__ */ function() {
function AbrController2(hls) {
this.hls = void 0;
this.lastLoadedFragLevel = 0;
this._nextAutoLevel = -1;
this.timer = void 0;
this.onCheck = this._abandonRulesCheck.bind(this);
this.fragCurrent = null;
this.partCurrent = null;
this.bitrateTestDelay = 0;
this.bwEstimator = void 0;
this.hls = hls;
var config = hls.config;
this.bwEstimator = new _utils_ewma_bandwidth_estimator__WEBPACK_IMPORTED_MODULE_1__["default"](config.abrEwmaSlowVoD, config.abrEwmaFastVoD, config.abrEwmaDefaultEstimate);
this.registerListeners();
}
var _proto = AbrController2.prototype;
_proto.registerListeners = function registerListeners() {
var hls = this.hls;
hls.on(_events__WEBPACK_IMPORTED_MODULE_2__.Events.FRAG_LOADING, this.onFragLoading, this);
hls.on(_events__WEBPACK_IMPORTED_MODULE_2__.Events.FRAG_LOADED, this.onFragLoaded, this);
hls.on(_events__WEBPACK_IMPORTED_MODULE_2__.Events.FRAG_BUFFERED, this.onFragBuffered, this);
hls.on(_events__WEBPACK_IMPORTED_MODULE_2__.Events.LEVEL_LOADED, this.onLevelLoaded, this);
hls.on(_events__WEBPACK_IMPORTED_MODULE_2__.Events.ERROR, this.onError, this);
};
_proto.unregisterListeners = function unregisterListeners() {
var hls = this.hls;
hls.off(_events__WEBPACK_IMPORTED_MODULE_2__.Events.FRAG_LOADING, this.onFragLoading, this);
hls.off(_events__WEBPACK_IMPORTED_MODULE_2__.Events.FRAG_LOADED, this.onFragLoaded, this);
hls.off(_events__WEBPACK_IMPORTED_MODULE_2__.Events.FRAG_BUFFERED, this.onFragBuffered, this);
hls.off(_events__WEBPACK_IMPORTED_MODULE_2__.Events.LEVEL_LOADED, this.onLevelLoaded, this);
hls.off(_events__WEBPACK_IMPORTED_MODULE_2__.Events.ERROR, this.onError, this);
};
_proto.destroy = function destroy() {
this.unregisterListeners();
this.clearTimer();
this.hls = this.onCheck = null;
this.fragCurrent = this.partCurrent = null;
};
_proto.onFragLoading = function onFragLoading(event, data) {
var frag = data.frag;
if (frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_4__.PlaylistLevelType.MAIN) {
if (!this.timer) {
var _data$part;
this.fragCurrent = frag;
this.partCurrent = (_data$part = data.part) != null ? _data$part : null;
this.timer = self.setInterval(this.onCheck, 100);
}
}
};
_proto.onLevelLoaded = function onLevelLoaded(event, data) {
var config = this.hls.config;
if (data.details.live) {
this.bwEstimator.update(config.abrEwmaSlowLive, config.abrEwmaFastLive);
} else {
this.bwEstimator.update(config.abrEwmaSlowVoD, config.abrEwmaFastVoD);
}
};
_proto._abandonRulesCheck = function _abandonRulesCheck() {
var frag = this.fragCurrent, part = this.partCurrent, hls = this.hls;
var autoLevelEnabled = hls.autoLevelEnabled;
hls.config;
var media = hls.media;
if (!frag || !media) {
return;
}
var stats = part ? part.stats : frag.stats;
var duration = part ? part.duration : frag.duration;
if (stats.aborted || stats.loaded && stats.loaded === stats.total || frag.level === 0) {
this.clearTimer();
this._nextAutoLevel = -1;
return;
}
if (!autoLevelEnabled || media.paused || !media.playbackRate || !media.readyState) {
return;
}
var bufferInfo = hls.mainForwardBufferInfo;
if (bufferInfo === null) {
return;
}
var requestDelay = performance.now() - stats.loading.start;
var playbackRate = Math.abs(media.playbackRate);
if (requestDelay <= 500 * duration / playbackRate) {
return;
}
var loadedFirstByte = stats.loaded && stats.loading.first;
var bwEstimate = this.bwEstimator.getEstimate();
var levels = hls.levels, minAutoLevel = hls.minAutoLevel;
var level = levels[frag.level];
var expectedLen = stats.total || Math.max(stats.loaded, Math.round(duration * level.maxBitrate / 8));
var loadRate = loadedFirstByte ? stats.loaded * 1e3 / requestDelay : 0;
var fragLoadedDelay = loadRate ? (expectedLen - stats.loaded) / loadRate : expectedLen * 8 / bwEstimate;
var bufferStarvationDelay = bufferInfo.len / playbackRate;
if (fragLoadedDelay <= bufferStarvationDelay) {
return;
}
var fragLevelNextLoadedDelay = Number.POSITIVE_INFINITY;
var nextLoadLevel;
for (nextLoadLevel = frag.level - 1; nextLoadLevel > minAutoLevel; nextLoadLevel--) {
var levelNextBitrate = levels[nextLoadLevel].maxBitrate;
fragLevelNextLoadedDelay = loadRate ? duration * levelNextBitrate / (8 * 0.8 * loadRate) : duration * levelNextBitrate / bwEstimate;
if (fragLevelNextLoadedDelay < bufferStarvationDelay) {
break;
}
}
if (fragLevelNextLoadedDelay >= fragLoadedDelay) {
return;
}
_utils_logger__WEBPACK_IMPORTED_MODULE_5__.logger.warn("Fragment " + frag.sn + (part ? " part " + part.index : "") + " of level " + frag.level + " is loading too slowly and will cause an underbuffer; aborting and switching to level " + nextLoadLevel + "\n Current BW estimate: " + ((0, _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__.isFiniteNumber)(bwEstimate) ? (bwEstimate / 1024).toFixed(3) : "Unknown") + " Kb/s\n Estimated load time for current fragment: " + fragLoadedDelay.toFixed(3) + " s\n Estimated load time for the next fragment: " + fragLevelNextLoadedDelay.toFixed(3) + " s\n Time to underbuffer: " + bufferStarvationDelay.toFixed(3) + " s");
hls.nextLoadLevel = nextLoadLevel;
if (loadedFirstByte) {
this.bwEstimator.sample(requestDelay, stats.loaded);
}
this.clearTimer();
if (frag.loader) {
this.fragCurrent = this.partCurrent = null;
frag.loader.abort();
}
hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__.Events.FRAG_LOAD_EMERGENCY_ABORTED, {
frag,
part,
stats
});
};
_proto.onFragLoaded = function onFragLoaded(event, _ref) {
var frag = _ref.frag, part = _ref.part;
if (frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_4__.PlaylistLevelType.MAIN && (0, _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__.isFiniteNumber)(frag.sn)) {
var stats = part ? part.stats : frag.stats;
var duration = part ? part.duration : frag.duration;
this.clearTimer();
this.lastLoadedFragLevel = frag.level;
this._nextAutoLevel = -1;
if (this.hls.config.abrMaxWithRealBitrate) {
var level = this.hls.levels[frag.level];
var loadedBytes = (level.loaded ? level.loaded.bytes : 0) + stats.loaded;
var loadedDuration = (level.loaded ? level.loaded.duration : 0) + duration;
level.loaded = {
bytes: loadedBytes,
duration: loadedDuration
};
level.realBitrate = Math.round(8 * loadedBytes / loadedDuration);
}
if (frag.bitrateTest) {
var fragBufferedData = {
stats,
frag,
part,
id: frag.type
};
this.onFragBuffered(_events__WEBPACK_IMPORTED_MODULE_2__.Events.FRAG_BUFFERED, fragBufferedData);
}
}
};
_proto.onFragBuffered = function onFragBuffered(event, data) {
var frag = data.frag, part = data.part;
var stats = part ? part.stats : frag.stats;
if (stats.aborted) {
return;
}
if (frag.type !== _types_loader__WEBPACK_IMPORTED_MODULE_4__.PlaylistLevelType.MAIN || frag.sn === "initSegment") {
return;
}
var processingMs = stats.parsing.end - stats.loading.start;
this.bwEstimator.sample(processingMs, stats.loaded);
stats.bwEstimate = this.bwEstimator.getEstimate();
if (frag.bitrateTest) {
this.bitrateTestDelay = processingMs / 1e3;
} else {
this.bitrateTestDelay = 0;
}
};
_proto.onError = function onError(event, data) {
switch (data.details) {
case _errors__WEBPACK_IMPORTED_MODULE_3__.ErrorDetails.FRAG_LOAD_ERROR:
case _errors__WEBPACK_IMPORTED_MODULE_3__.ErrorDetails.FRAG_LOAD_TIMEOUT:
this.clearTimer();
break;
}
};
_proto.clearTimer = function clearTimer() {
self.clearInterval(this.timer);
this.timer = void 0;
};
_proto.getNextABRAutoLevel = function getNextABRAutoLevel() {
var fragCurrent = this.fragCurrent, partCurrent = this.partCurrent, hls = this.hls;
var maxAutoLevel = hls.maxAutoLevel, config = hls.config, minAutoLevel = hls.minAutoLevel, media = hls.media;
var currentFragDuration = partCurrent ? partCurrent.duration : fragCurrent ? fragCurrent.duration : 0;
media ? media.currentTime : 0;
var playbackRate = media && media.playbackRate !== 0 ? Math.abs(media.playbackRate) : 1;
var avgbw = this.bwEstimator ? this.bwEstimator.getEstimate() : config.abrEwmaDefaultEstimate;
var bufferInfo = hls.mainForwardBufferInfo;
var bufferStarvationDelay = (bufferInfo ? bufferInfo.len : 0) / playbackRate;
var bestLevel = this.findBestLevel(avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, config.abrBandWidthFactor, config.abrBandWidthUpFactor);
if (bestLevel >= 0) {
return bestLevel;
}
_utils_logger__WEBPACK_IMPORTED_MODULE_5__.logger.trace((bufferStarvationDelay ? "rebuffering expected" : "buffer is empty") + ", finding optimal quality level");
var maxStarvationDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxStarvationDelay) : config.maxStarvationDelay;
var bwFactor = config.abrBandWidthFactor;
var bwUpFactor = config.abrBandWidthUpFactor;
if (!bufferStarvationDelay) {
var bitrateTestDelay = this.bitrateTestDelay;
if (bitrateTestDelay) {
var maxLoadingDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxLoadingDelay) : config.maxLoadingDelay;
maxStarvationDelay = maxLoadingDelay - bitrateTestDelay;
_utils_logger__WEBPACK_IMPORTED_MODULE_5__.logger.trace("bitrate test took " + Math.round(1e3 * bitrateTestDelay) + "ms, set first fragment max fetchDuration to " + Math.round(1e3 * maxStarvationDelay) + " ms");
bwFactor = bwUpFactor = 1;
}
}
bestLevel = this.findBestLevel(avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay + maxStarvationDelay, bwFactor, bwUpFactor);
return Math.max(bestLevel, 0);
};
_proto.findBestLevel = function findBestLevel(currentBw, minAutoLevel, maxAutoLevel, maxFetchDuration, bwFactor, bwUpFactor) {
var _level$details;
var fragCurrent = this.fragCurrent, partCurrent = this.partCurrent, currentLevel = this.lastLoadedFragLevel;
var levels = this.hls.levels;
var level = levels[currentLevel];
var live = !!(level !== null && level !== void 0 && (_level$details = level.details) !== null && _level$details !== void 0 && _level$details.live);
var currentCodecSet = level === null || level === void 0 ? void 0 : level.codecSet;
var currentFragDuration = partCurrent ? partCurrent.duration : fragCurrent ? fragCurrent.duration : 0;
for (var i = maxAutoLevel; i >= minAutoLevel; i--) {
var levelInfo = levels[i];
if (!levelInfo || currentCodecSet && levelInfo.codecSet !== currentCodecSet) {
continue;
}
var levelDetails = levelInfo.details;
var avgDuration = (partCurrent ? levelDetails === null || levelDetails === void 0 ? void 0 : levelDetails.partTarget : levelDetails === null || levelDetails === void 0 ? void 0 : levelDetails.averagetargetduration) || currentFragDuration;
var adjustedbw = void 0;
if (i <= currentLevel) {
adjustedbw = bwFactor * currentBw;
} else {
adjustedbw = bwUpFactor * currentBw;
}
var bitrate = levels[i].maxBitrate;
var fetchDuration = bitrate * avgDuration / adjustedbw;
_utils_logger__WEBPACK_IMPORTED_MODULE_5__.logger.trace("level/adjustedbw/bitrate/avgDuration/maxFetchDuration/fetchDuration: " + i + "/" + Math.round(adjustedbw) + "/" + bitrate + "/" + avgDuration + "/" + maxFetchDuration + "/" + fetchDuration);
if (adjustedbw > bitrate && (fetchDuration === 0 || !(0, _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__.isFiniteNumber)(fetchDuration) || live && !this.bitrateTestDelay || fetchDuration < maxFetchDuration)) {
return i;
}
}
return -1;
};
_createClass(AbrController2, [{
key: "nextAutoLevel",
get: function get() {
var forcedAutoLevel = this._nextAutoLevel;
var bwEstimator = this.bwEstimator;
if (forcedAutoLevel !== -1 && !bwEstimator.canEstimate()) {
return forcedAutoLevel;
}
var nextABRAutoLevel = this.getNextABRAutoLevel();
if (forcedAutoLevel !== -1 && this.hls.levels[nextABRAutoLevel].loadError) {
return forcedAutoLevel;
}
if (forcedAutoLevel !== -1) {
nextABRAutoLevel = Math.min(forcedAutoLevel, nextABRAutoLevel);
}
return nextABRAutoLevel;
},
set: function set(nextLevel) {
this._nextAutoLevel = nextLevel;
}
}]);
return AbrController2;
}();
const __WEBPACK_DEFAULT_EXPORT__ = AbrController;
},
"./src/controller/audio-stream-controller.ts": (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => {
__webpack_require__3.r(__webpack_exports__2);
__webpack_require__3.d(__webpack_exports__2, {
"default": () => __WEBPACK_DEFAULT_EXPORT__
});
var _home_runner_work_hls_js_hls_js_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3("./src/polyfills/number.ts");
var _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3("./src/controller/base-stream-controller.ts");
var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__3("./src/events.ts");
var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__3("./src/utils/buffer-helper.ts");
var _fragment_tracker__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__3("./src/controller/fragment-tracker.ts");