wargerm 0.7.45 → 0.7.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,6 +5,7 @@ declare type propsType = {
5
5
  height: number | string;
6
6
  width: number | string;
7
7
  };
8
+ onPlayerClose?: <T, S>(index: T, urls: S) => void;
8
9
  layouts?: Array<any>;
9
10
  layoutIndex?: number;
10
11
  config?: Record<any, any>;
package/dist/index.esm.js CHANGED
@@ -20,7 +20,7 @@ import zhCN$1 from 'antd/es/locale/zh_CN';
20
20
  import weekOfYear from 'dayjs/plugin/weekOfYear';
21
21
  import Player from 'xgplayer';
22
22
  import FlvPlayer from 'xgplayer-flv.js';
23
- import HlsJsPlayer from 'xgplayer-hls.js';
23
+ import Hls from 'hls.js';
24
24
  import ReactEChartsCore from 'echarts-for-react/lib/core';
25
25
  import * as echarts from 'echarts/core';
26
26
  import { use, registerTheme, graphic } from 'echarts/core';
@@ -278,6 +278,36 @@ function _createSuper(Derived) {
278
278
  };
279
279
  }
280
280
 
281
+ function _superPropBase(object, property) {
282
+ while (!Object.prototype.hasOwnProperty.call(object, property)) {
283
+ object = _getPrototypeOf(object);
284
+ if (object === null) break;
285
+ }
286
+
287
+ return object;
288
+ }
289
+
290
+ function _get() {
291
+ if (typeof Reflect !== "undefined" && Reflect.get) {
292
+ _get = Reflect.get;
293
+ } else {
294
+ _get = function _get(target, property, receiver) {
295
+ var base = _superPropBase(target, property);
296
+
297
+ if (!base) return;
298
+ var desc = Object.getOwnPropertyDescriptor(base, property);
299
+
300
+ if (desc.get) {
301
+ return desc.get.call(arguments.length < 3 ? target : receiver);
302
+ }
303
+
304
+ return desc.value;
305
+ };
306
+ }
307
+
308
+ return _get.apply(this, arguments);
309
+ }
310
+
281
311
  function _slicedToArray(arr, i) {
282
312
  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
283
313
  }
@@ -8484,6 +8514,327 @@ var WebsocketHeart = /*#__PURE__*/_createClass(function WebsocketHeart(_ref) {
8484
8514
  this.heartCheck = null;
8485
8515
  });
8486
8516
 
8517
+ var util = {};
8518
+
8519
+ util.getBrowserVersion = function () {
8520
+ var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
8521
+
8522
+ if (userAgent.toLowerCase().indexOf("mobile") > -1) {
8523
+ return "Unknown";
8524
+ }
8525
+
8526
+ if (userAgent.indexOf("Firefox") > -1) {
8527
+ var version = userAgent.match(/firefox\/[\d.]+/gi)[0].match(/[\d]+/)[0];
8528
+ return "Firefox " + version;
8529
+ } else if (userAgent.indexOf("Edge") > -1) {
8530
+ var _version = userAgent.match(/edge\/[\d.]+/gi)[0].match(/[\d]+/)[0];
8531
+ return "Edge " + _version;
8532
+ } else if (userAgent.indexOf("rv:11") > -1) {
8533
+ return "IE 11";
8534
+ } else if (userAgent.indexOf("Opera") > -1 || userAgent.indexOf("OPR") > -1) {
8535
+ if (userAgent.indexOf("Opera") > -1) {
8536
+ var _version2 = userAgent.match(/opera\/[\d.]+/gi)[0].match(/[\d]+/)[0];
8537
+ return "Opera " + _version2;
8538
+ }
8539
+
8540
+ if (userAgent.indexOf("OPR") > -1) {
8541
+ var _version3 = userAgent.match(/opr\/[\d.]+/gi)[0].match(/[\d]+/)[0];
8542
+ return "Opera " + _version3;
8543
+ }
8544
+ } else if (userAgent.indexOf("Chrome") > -1) {
8545
+ var _version4 = userAgent.match(/chrome\/[\d.]+/gi)[0].match(/[\d]+/)[0];
8546
+ return "Chrome " + _version4;
8547
+ } else if (userAgent.indexOf("Safari") > -1) {
8548
+ var _version5 = userAgent.match(/safari\/[\d.]+/gi)[0].match(/[\d]+/)[0];
8549
+ return "Safari " + _version5;
8550
+ } else if (userAgent.indexOf("MSIE") > -1 || userAgent.indexOf("Trident") > -1) {
8551
+ if (userAgent.indexOf("MSIE") > -1) {
8552
+ var _version6 = userAgent.match(/msie [\d.]+/gi)[0].match(/[\d]+/)[0];
8553
+ return "IE " + _version6;
8554
+ }
8555
+
8556
+ if (userAgent.indexOf("Trident") > -1) {
8557
+ var versionTrident = userAgent.match(/trident\/[\d.]+/gi)[0].match(/[\d]+/)[0];
8558
+
8559
+ var _version7 = parseInt(versionTrident) + 4;
8560
+
8561
+ return "IE " + _version7;
8562
+ }
8563
+ } else {
8564
+ return "Unknown";
8565
+ }
8566
+ };
8567
+
8568
+ var HlsJsPlayer = /*#__PURE__*/function (_Player) {
8569
+ _inherits(HlsJsPlayer, _Player);
8570
+
8571
+ var _super = _createSuper(HlsJsPlayer);
8572
+
8573
+ function HlsJsPlayer(options) {
8574
+ var _this;
8575
+
8576
+ _classCallCheck(this, HlsJsPlayer);
8577
+
8578
+ _this = _super.call(this, options);
8579
+ _this.hlsOpts = options.hlsOpts || {};
8580
+ _this.hlsOpts.mediaType = _this.config.mediaType;
8581
+ var util$1 = Player.util;
8582
+
8583
+ var player = _assertThisInitialized(_this);
8584
+
8585
+ player.once('complete', function () {
8586
+ if (player.config.isLive) {
8587
+ util$1.addClass(player.root, 'xgplayer-is-live');
8588
+
8589
+ if (!util$1.findDom(player.controls, '.xgplayer-live')) {
8590
+ var live = util$1.createDom('xg-live', player.lang.LIVE || '正在直播', {}, 'xgplayer-live');
8591
+ player.controls.appendChild(live);
8592
+ }
8593
+ }
8594
+ });
8595
+ _this.browser = util.getBrowserVersion();
8596
+
8597
+ if (player.config.useHls === undefined) {
8598
+ if (Player.sniffer.device === 'mobile' && navigator.platform !== 'MacIntel' && navigator.platform !== 'Win32' || _this.browser.indexOf('Safari') > -1) {
8599
+ return _possibleConstructorReturn(_this);
8600
+ }
8601
+ } else if (!player.config.useHls) {
8602
+ return _possibleConstructorReturn(_this);
8603
+ }
8604
+
8605
+ _this._start = _this.start;
8606
+
8607
+ _this.start = function () {
8608
+ if (!window.XgVideoProxy) {
8609
+ _this.root.insertBefore(_this.video, _this.root.firstChild);
8610
+ }
8611
+
8612
+ setTimeout(function () {
8613
+ _this.emit('complete');
8614
+
8615
+ if (_this.danmu && typeof _this.danmu.resize === 'function') {
8616
+ _this.danmu.resize();
8617
+ }
8618
+ }, 1);
8619
+ };
8620
+
8621
+ Number.isFinite = Number.isFinite || function (value) {
8622
+ return typeof value === "number" && isFinite(value);
8623
+ };
8624
+
8625
+ var hls;
8626
+ hls = new Hls(_this.hlsOpts);
8627
+ _this.hls = hls;
8628
+ Object.defineProperty(player, 'src', {
8629
+ get: function get() {
8630
+ return player.currentSrc;
8631
+ },
8632
+ set: function set(url) {
8633
+ util$1.removeClass(player.root, 'xgplayer-is-live');
8634
+ var liveDom = document.querySelector('.xgplayer-live');
8635
+
8636
+ if (liveDom) {
8637
+ liveDom.parentNode.removeChild(liveDom);
8638
+ } // player.config.url = url
8639
+
8640
+
8641
+ player.autoplay = true;
8642
+ var paused = player.paused;
8643
+
8644
+ if (!paused) {
8645
+ player.pause();
8646
+ }
8647
+
8648
+ player.hls.stopLoad();
8649
+ player.hls.detachMedia();
8650
+ player.hls.destroy();
8651
+ player.hls = new Hls(player.hlsOpts);
8652
+ player.register(url);
8653
+ player.once('canplay', function () {
8654
+ player.play().catch(function (err) {});
8655
+ });
8656
+ player.hls.loadSource(url);
8657
+ player.hls.attachMedia(player.video);
8658
+ },
8659
+ configurable: true
8660
+ });
8661
+
8662
+ _this.register(_this.config.url);
8663
+
8664
+ _this.once('complete', function () {
8665
+ hls.attachMedia(player.video);
8666
+
8667
+ if (!player.config.videoInit) {
8668
+ player.once('canplay', function () {
8669
+ player.play().catch(function (err) {});
8670
+ });
8671
+ }
8672
+ });
8673
+
8674
+ _this.once('destroy', function () {
8675
+ hls.stopLoad();
8676
+ });
8677
+
8678
+ return _this;
8679
+ }
8680
+
8681
+ _createClass(HlsJsPlayer, [{
8682
+ key: "switchURL",
8683
+ value: function switchURL(url) {
8684
+ var player = this;
8685
+ player.url = url;
8686
+ player.config.url = url;
8687
+ var curTime = player.currentTime; // player.video.muted = true
8688
+
8689
+ Player.util.addClass(player.root, 'xgplayer-is-enter');
8690
+ player.once('playing', function () {
8691
+ Player.util.removeClass(player.root, 'xgplayer-is-enter'); // player.video.muted = false
8692
+ });
8693
+ player.once('canplay', function () {
8694
+ player.currentTime = curTime;
8695
+ player.play();
8696
+ });
8697
+
8698
+ if (_typeof(player.hls) === 'object') {
8699
+ player.hls.originUrl = url;
8700
+ }
8701
+
8702
+ player.src = url;
8703
+ }
8704
+ }, {
8705
+ key: "register",
8706
+ value: function register(url) {
8707
+ var hls = this.hls;
8708
+ var util = Player.util;
8709
+ var player = this;
8710
+ hls.on(Hls.Events.MEDIA_ATTACHED, function () {
8711
+ hls.loadSource(url);
8712
+ });
8713
+ hls.on(Hls.Events.LEVEL_LOADED, function (name, e) {
8714
+ if (!hls.inited) {
8715
+ hls.inited = true;
8716
+
8717
+ if (e && e.details && e.details.live) {
8718
+ util.addClass(player.root, 'xgplayer-is-live');
8719
+
8720
+ if (!util.findDom(player.root, '.xgplayer-live')) {
8721
+ var live = util.createDom('xg-live', player.lang.LIVE || '正在直播', {}, 'xgplayer-live');
8722
+ player.controls.appendChild(live);
8723
+ }
8724
+ }
8725
+ }
8726
+ });
8727
+ hls.on(Hls.Events.ERROR, function (event, data) {
8728
+ player.emit('HLS_ERROR', {
8729
+ errorType: data.type,
8730
+ errorDetails: data.details,
8731
+ errorFatal: data.fatal
8732
+ });
8733
+
8734
+ if (data.fatal) {
8735
+ switch (data.type) {
8736
+ case Hls.ErrorTypes.NETWORK_ERROR:
8737
+ hls.startLoad();
8738
+ break;
8739
+
8740
+ case Hls.ErrorTypes.MEDIA_ERROR:
8741
+ hls.recoverMediaError();
8742
+ break;
8743
+
8744
+ default:
8745
+ player.emit('error', data);
8746
+ }
8747
+ }
8748
+ });
8749
+
8750
+ this._statistics();
8751
+ }
8752
+ }, {
8753
+ key: "updateURLOnly",
8754
+ value: function updateURLOnly(url) {
8755
+ var player = this;
8756
+ var levelController = player.hls.levelController;
8757
+
8758
+ if (Array.isArray(levelController._levels) && levelController._levels.length > 0) {
8759
+ levelController._levels[0].url = [url];
8760
+ }
8761
+
8762
+ player.config.url = url;
8763
+ player.url = url;
8764
+ player.hls.originUrl = url;
8765
+ }
8766
+ }, {
8767
+ key: "_statistics",
8768
+ value: function _statistics() {
8769
+ var statsInfo = {
8770
+ speed: 0,
8771
+ playerType: "HlsPlayer"
8772
+ };
8773
+ var mediainfo = {
8774
+ videoDataRate: 0,
8775
+ audioDataRate: 0
8776
+ };
8777
+ var hls = this.hls;
8778
+ var player = this;
8779
+ hls.on(Hls.Events.FRAG_LOAD_PROGRESS, function (flag, payload) {
8780
+ statsInfo.speed = payload.stats.loaded / 1000;
8781
+ });
8782
+ hls.on(Hls.Events.FRAG_PARSING_DATA, function (flag, payload) {
8783
+ if (payload.type === 'video') {
8784
+ mediainfo.fps = parseInt(payload.nb / (payload.endPTS - payload.startPTS));
8785
+ }
8786
+ });
8787
+ hls.on(Hls.Events.FRAG_PARSING_INIT_SEGMENT, function (flag, payload) {
8788
+ mediainfo.hasAudio = payload && payload.tracks && payload.tracks.audio ? true : false;
8789
+ mediainfo.hasVideo = payload && payload.tracks && payload.tracks.video ? true : false;
8790
+
8791
+ if (mediainfo.hasAudio && payload.tracks.audio) {
8792
+ var track = payload.tracks.audio;
8793
+ mediainfo.audioChannelCount = track.metadata && track.metadata.channelCount ? track.metadata.channelCount : 0;
8794
+ mediainfo.audioCodec = track.codec;
8795
+ }
8796
+
8797
+ if (mediainfo.hasVideo && payload.tracks.video) {
8798
+ var _track = payload.tracks.video;
8799
+ mediainfo.videoCodec = _track.codec;
8800
+ mediainfo.width = _track.metadata && _track.metadata.width ? _track.metadata.width : 0;
8801
+ mediainfo.height = _track.metadata && _track.metadata.height ? _track.metadata.height : 0;
8802
+ }
8803
+
8804
+ mediainfo.duration = payload.frag && payload.frag.duration ? payload.frag.duration : 0;
8805
+ mediainfo.level = payload.frag && payload.frag.level ? payload.frag.level : 0;
8806
+
8807
+ if (mediainfo.videoCodec || mediainfo.audioCodec) {
8808
+ mediainfo.mimeType = "video/hls; codecs=\"".concat(mediainfo.videoCodec, ";").concat(mediainfo.audioCodec, "\"");
8809
+ }
8810
+
8811
+ player.mediainfo = mediainfo;
8812
+ player.emit("media_info", mediainfo);
8813
+ });
8814
+ this._statisticsTimmer = setInterval(function () {
8815
+ player.emit("statistics_info", statsInfo);
8816
+ statsInfo.speed = 0;
8817
+ }, 1000);
8818
+ }
8819
+ }, {
8820
+ key: "destroy",
8821
+ value: function destroy() {
8822
+ clearInterval(this._statisticsTimmer);
8823
+
8824
+ if (this.hls) {
8825
+ this.hls.destroy();
8826
+ }
8827
+
8828
+ _get(_getPrototypeOf(HlsJsPlayer.prototype), "destroy", this).call(this);
8829
+ }
8830
+ }]);
8831
+
8832
+ return HlsJsPlayer;
8833
+ }(Player);
8834
+
8835
+ HlsJsPlayer.isSupported = Hls.isSupported;
8836
+ HlsJsPlayer.HlsJs = Hls;
8837
+
8487
8838
  function Xgplay(_ref, fRef) {
8488
8839
  var config = _ref.config,
8489
8840
  type = _ref.type,
@@ -8632,6 +8983,7 @@ function VideoPlayer$1(_ref, ref) {
8632
8983
  layoutIndex = _ref$layoutIndex === void 0 ? 0 : _ref$layoutIndex,
8633
8984
  _ref$url = _ref.url,
8634
8985
  url = _ref$url === void 0 ? [] : _ref$url,
8986
+ onPlayerClose = _ref.onPlayerClose,
8635
8987
  _ref$layouts = _ref.layouts,
8636
8988
  layouts = _ref$layouts === void 0 ? basicLayouts : _ref$layouts;
8637
8989
  var allLayouts = layouts;
@@ -8667,6 +9019,12 @@ function VideoPlayer$1(_ref, ref) {
8667
9019
  players = _useState8[0],
8668
9020
  setPlayers = _useState8[1];
8669
9021
 
9022
+ var handleCloseAll = function handleCloseAll() {
9023
+ setPlayers([]);
9024
+ setUrls([]);
9025
+ setCurrentPlayerIndex(0);
9026
+ };
9027
+
8670
9028
  var renderDom = useMemo(function () {
8671
9029
  var arr = new Array(allLayouts[currentLayoutIndex].span).fill(0);
8672
9030
  return arr.map(function (item, index) {
@@ -8688,6 +9046,7 @@ function VideoPlayer$1(_ref, ref) {
8688
9046
 
8689
9047
  arr.splice(index, 1, '');
8690
9048
  setUrls(arr);
9049
+ onPlayerClose && onPlayerClose(index, arr);
8691
9050
  }
8692
9051
  }, /*#__PURE__*/React.createElement(CloseOutlined, null))), /*#__PURE__*/React.createElement(Xgplay$1, {
8693
9052
  setRef: function setRef(ref) {
@@ -8768,6 +9127,7 @@ function VideoPlayer$1(_ref, ref) {
8768
9127
  currentLayoutIndex: currentLayoutIndex,
8769
9128
  currentPlayerIndex: currentPlayerIndex,
8770
9129
  urls: urls,
9130
+ handleCloseAll: handleCloseAll,
8771
9131
  loadCamera: loadCamera
8772
9132
  };
8773
9133
  });
package/dist/index.js CHANGED
@@ -24,7 +24,7 @@ var zhCN$1 = require('antd/es/locale/zh_CN');
24
24
  var weekOfYear = require('dayjs/plugin/weekOfYear');
25
25
  var Player = require('xgplayer');
26
26
  var FlvPlayer = require('xgplayer-flv.js');
27
- var HlsJsPlayer = require('xgplayer-hls.js');
27
+ var Hls = require('hls.js');
28
28
  var ReactEChartsCore = require('echarts-for-react/lib/core');
29
29
  var echarts = require('echarts/core');
30
30
  var charts = require('echarts/charts');
@@ -68,7 +68,7 @@ var zhCN__default$1 = /*#__PURE__*/_interopDefaultLegacy(zhCN$1);
68
68
  var weekOfYear__default = /*#__PURE__*/_interopDefaultLegacy(weekOfYear);
69
69
  var Player__default = /*#__PURE__*/_interopDefaultLegacy(Player);
70
70
  var FlvPlayer__default = /*#__PURE__*/_interopDefaultLegacy(FlvPlayer);
71
- var HlsJsPlayer__default = /*#__PURE__*/_interopDefaultLegacy(HlsJsPlayer);
71
+ var Hls__default = /*#__PURE__*/_interopDefaultLegacy(Hls);
72
72
  var ReactEChartsCore__default = /*#__PURE__*/_interopDefaultLegacy(ReactEChartsCore);
73
73
  var echarts__namespace = /*#__PURE__*/_interopNamespace(echarts);
74
74
 
@@ -322,6 +322,36 @@ function _createSuper(Derived) {
322
322
  };
323
323
  }
324
324
 
325
+ function _superPropBase(object, property) {
326
+ while (!Object.prototype.hasOwnProperty.call(object, property)) {
327
+ object = _getPrototypeOf(object);
328
+ if (object === null) break;
329
+ }
330
+
331
+ return object;
332
+ }
333
+
334
+ function _get() {
335
+ if (typeof Reflect !== "undefined" && Reflect.get) {
336
+ _get = Reflect.get;
337
+ } else {
338
+ _get = function _get(target, property, receiver) {
339
+ var base = _superPropBase(target, property);
340
+
341
+ if (!base) return;
342
+ var desc = Object.getOwnPropertyDescriptor(base, property);
343
+
344
+ if (desc.get) {
345
+ return desc.get.call(arguments.length < 3 ? target : receiver);
346
+ }
347
+
348
+ return desc.value;
349
+ };
350
+ }
351
+
352
+ return _get.apply(this, arguments);
353
+ }
354
+
325
355
  function _slicedToArray(arr, i) {
326
356
  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
327
357
  }
@@ -8528,6 +8558,327 @@ var WebsocketHeart = /*#__PURE__*/_createClass(function WebsocketHeart(_ref) {
8528
8558
  this.heartCheck = null;
8529
8559
  });
8530
8560
 
8561
+ var util = {};
8562
+
8563
+ util.getBrowserVersion = function () {
8564
+ var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
8565
+
8566
+ if (userAgent.toLowerCase().indexOf("mobile") > -1) {
8567
+ return "Unknown";
8568
+ }
8569
+
8570
+ if (userAgent.indexOf("Firefox") > -1) {
8571
+ var version = userAgent.match(/firefox\/[\d.]+/gi)[0].match(/[\d]+/)[0];
8572
+ return "Firefox " + version;
8573
+ } else if (userAgent.indexOf("Edge") > -1) {
8574
+ var _version = userAgent.match(/edge\/[\d.]+/gi)[0].match(/[\d]+/)[0];
8575
+ return "Edge " + _version;
8576
+ } else if (userAgent.indexOf("rv:11") > -1) {
8577
+ return "IE 11";
8578
+ } else if (userAgent.indexOf("Opera") > -1 || userAgent.indexOf("OPR") > -1) {
8579
+ if (userAgent.indexOf("Opera") > -1) {
8580
+ var _version2 = userAgent.match(/opera\/[\d.]+/gi)[0].match(/[\d]+/)[0];
8581
+ return "Opera " + _version2;
8582
+ }
8583
+
8584
+ if (userAgent.indexOf("OPR") > -1) {
8585
+ var _version3 = userAgent.match(/opr\/[\d.]+/gi)[0].match(/[\d]+/)[0];
8586
+ return "Opera " + _version3;
8587
+ }
8588
+ } else if (userAgent.indexOf("Chrome") > -1) {
8589
+ var _version4 = userAgent.match(/chrome\/[\d.]+/gi)[0].match(/[\d]+/)[0];
8590
+ return "Chrome " + _version4;
8591
+ } else if (userAgent.indexOf("Safari") > -1) {
8592
+ var _version5 = userAgent.match(/safari\/[\d.]+/gi)[0].match(/[\d]+/)[0];
8593
+ return "Safari " + _version5;
8594
+ } else if (userAgent.indexOf("MSIE") > -1 || userAgent.indexOf("Trident") > -1) {
8595
+ if (userAgent.indexOf("MSIE") > -1) {
8596
+ var _version6 = userAgent.match(/msie [\d.]+/gi)[0].match(/[\d]+/)[0];
8597
+ return "IE " + _version6;
8598
+ }
8599
+
8600
+ if (userAgent.indexOf("Trident") > -1) {
8601
+ var versionTrident = userAgent.match(/trident\/[\d.]+/gi)[0].match(/[\d]+/)[0];
8602
+
8603
+ var _version7 = parseInt(versionTrident) + 4;
8604
+
8605
+ return "IE " + _version7;
8606
+ }
8607
+ } else {
8608
+ return "Unknown";
8609
+ }
8610
+ };
8611
+
8612
+ var HlsJsPlayer = /*#__PURE__*/function (_Player) {
8613
+ _inherits(HlsJsPlayer, _Player);
8614
+
8615
+ var _super = _createSuper(HlsJsPlayer);
8616
+
8617
+ function HlsJsPlayer(options) {
8618
+ var _this;
8619
+
8620
+ _classCallCheck(this, HlsJsPlayer);
8621
+
8622
+ _this = _super.call(this, options);
8623
+ _this.hlsOpts = options.hlsOpts || {};
8624
+ _this.hlsOpts.mediaType = _this.config.mediaType;
8625
+ var util$1 = Player__default['default'].util;
8626
+
8627
+ var player = _assertThisInitialized(_this);
8628
+
8629
+ player.once('complete', function () {
8630
+ if (player.config.isLive) {
8631
+ util$1.addClass(player.root, 'xgplayer-is-live');
8632
+
8633
+ if (!util$1.findDom(player.controls, '.xgplayer-live')) {
8634
+ var live = util$1.createDom('xg-live', player.lang.LIVE || '正在直播', {}, 'xgplayer-live');
8635
+ player.controls.appendChild(live);
8636
+ }
8637
+ }
8638
+ });
8639
+ _this.browser = util.getBrowserVersion();
8640
+
8641
+ if (player.config.useHls === undefined) {
8642
+ if (Player__default['default'].sniffer.device === 'mobile' && navigator.platform !== 'MacIntel' && navigator.platform !== 'Win32' || _this.browser.indexOf('Safari') > -1) {
8643
+ return _possibleConstructorReturn(_this);
8644
+ }
8645
+ } else if (!player.config.useHls) {
8646
+ return _possibleConstructorReturn(_this);
8647
+ }
8648
+
8649
+ _this._start = _this.start;
8650
+
8651
+ _this.start = function () {
8652
+ if (!window.XgVideoProxy) {
8653
+ _this.root.insertBefore(_this.video, _this.root.firstChild);
8654
+ }
8655
+
8656
+ setTimeout(function () {
8657
+ _this.emit('complete');
8658
+
8659
+ if (_this.danmu && typeof _this.danmu.resize === 'function') {
8660
+ _this.danmu.resize();
8661
+ }
8662
+ }, 1);
8663
+ };
8664
+
8665
+ Number.isFinite = Number.isFinite || function (value) {
8666
+ return typeof value === "number" && isFinite(value);
8667
+ };
8668
+
8669
+ var hls;
8670
+ hls = new Hls__default['default'](_this.hlsOpts);
8671
+ _this.hls = hls;
8672
+ Object.defineProperty(player, 'src', {
8673
+ get: function get() {
8674
+ return player.currentSrc;
8675
+ },
8676
+ set: function set(url) {
8677
+ util$1.removeClass(player.root, 'xgplayer-is-live');
8678
+ var liveDom = document.querySelector('.xgplayer-live');
8679
+
8680
+ if (liveDom) {
8681
+ liveDom.parentNode.removeChild(liveDom);
8682
+ } // player.config.url = url
8683
+
8684
+
8685
+ player.autoplay = true;
8686
+ var paused = player.paused;
8687
+
8688
+ if (!paused) {
8689
+ player.pause();
8690
+ }
8691
+
8692
+ player.hls.stopLoad();
8693
+ player.hls.detachMedia();
8694
+ player.hls.destroy();
8695
+ player.hls = new Hls__default['default'](player.hlsOpts);
8696
+ player.register(url);
8697
+ player.once('canplay', function () {
8698
+ player.play().catch(function (err) {});
8699
+ });
8700
+ player.hls.loadSource(url);
8701
+ player.hls.attachMedia(player.video);
8702
+ },
8703
+ configurable: true
8704
+ });
8705
+
8706
+ _this.register(_this.config.url);
8707
+
8708
+ _this.once('complete', function () {
8709
+ hls.attachMedia(player.video);
8710
+
8711
+ if (!player.config.videoInit) {
8712
+ player.once('canplay', function () {
8713
+ player.play().catch(function (err) {});
8714
+ });
8715
+ }
8716
+ });
8717
+
8718
+ _this.once('destroy', function () {
8719
+ hls.stopLoad();
8720
+ });
8721
+
8722
+ return _this;
8723
+ }
8724
+
8725
+ _createClass(HlsJsPlayer, [{
8726
+ key: "switchURL",
8727
+ value: function switchURL(url) {
8728
+ var player = this;
8729
+ player.url = url;
8730
+ player.config.url = url;
8731
+ var curTime = player.currentTime; // player.video.muted = true
8732
+
8733
+ Player__default['default'].util.addClass(player.root, 'xgplayer-is-enter');
8734
+ player.once('playing', function () {
8735
+ Player__default['default'].util.removeClass(player.root, 'xgplayer-is-enter'); // player.video.muted = false
8736
+ });
8737
+ player.once('canplay', function () {
8738
+ player.currentTime = curTime;
8739
+ player.play();
8740
+ });
8741
+
8742
+ if (_typeof(player.hls) === 'object') {
8743
+ player.hls.originUrl = url;
8744
+ }
8745
+
8746
+ player.src = url;
8747
+ }
8748
+ }, {
8749
+ key: "register",
8750
+ value: function register(url) {
8751
+ var hls = this.hls;
8752
+ var util = Player__default['default'].util;
8753
+ var player = this;
8754
+ hls.on(Hls__default['default'].Events.MEDIA_ATTACHED, function () {
8755
+ hls.loadSource(url);
8756
+ });
8757
+ hls.on(Hls__default['default'].Events.LEVEL_LOADED, function (name, e) {
8758
+ if (!hls.inited) {
8759
+ hls.inited = true;
8760
+
8761
+ if (e && e.details && e.details.live) {
8762
+ util.addClass(player.root, 'xgplayer-is-live');
8763
+
8764
+ if (!util.findDom(player.root, '.xgplayer-live')) {
8765
+ var live = util.createDom('xg-live', player.lang.LIVE || '正在直播', {}, 'xgplayer-live');
8766
+ player.controls.appendChild(live);
8767
+ }
8768
+ }
8769
+ }
8770
+ });
8771
+ hls.on(Hls__default['default'].Events.ERROR, function (event, data) {
8772
+ player.emit('HLS_ERROR', {
8773
+ errorType: data.type,
8774
+ errorDetails: data.details,
8775
+ errorFatal: data.fatal
8776
+ });
8777
+
8778
+ if (data.fatal) {
8779
+ switch (data.type) {
8780
+ case Hls__default['default'].ErrorTypes.NETWORK_ERROR:
8781
+ hls.startLoad();
8782
+ break;
8783
+
8784
+ case Hls__default['default'].ErrorTypes.MEDIA_ERROR:
8785
+ hls.recoverMediaError();
8786
+ break;
8787
+
8788
+ default:
8789
+ player.emit('error', data);
8790
+ }
8791
+ }
8792
+ });
8793
+
8794
+ this._statistics();
8795
+ }
8796
+ }, {
8797
+ key: "updateURLOnly",
8798
+ value: function updateURLOnly(url) {
8799
+ var player = this;
8800
+ var levelController = player.hls.levelController;
8801
+
8802
+ if (Array.isArray(levelController._levels) && levelController._levels.length > 0) {
8803
+ levelController._levels[0].url = [url];
8804
+ }
8805
+
8806
+ player.config.url = url;
8807
+ player.url = url;
8808
+ player.hls.originUrl = url;
8809
+ }
8810
+ }, {
8811
+ key: "_statistics",
8812
+ value: function _statistics() {
8813
+ var statsInfo = {
8814
+ speed: 0,
8815
+ playerType: "HlsPlayer"
8816
+ };
8817
+ var mediainfo = {
8818
+ videoDataRate: 0,
8819
+ audioDataRate: 0
8820
+ };
8821
+ var hls = this.hls;
8822
+ var player = this;
8823
+ hls.on(Hls__default['default'].Events.FRAG_LOAD_PROGRESS, function (flag, payload) {
8824
+ statsInfo.speed = payload.stats.loaded / 1000;
8825
+ });
8826
+ hls.on(Hls__default['default'].Events.FRAG_PARSING_DATA, function (flag, payload) {
8827
+ if (payload.type === 'video') {
8828
+ mediainfo.fps = parseInt(payload.nb / (payload.endPTS - payload.startPTS));
8829
+ }
8830
+ });
8831
+ hls.on(Hls__default['default'].Events.FRAG_PARSING_INIT_SEGMENT, function (flag, payload) {
8832
+ mediainfo.hasAudio = payload && payload.tracks && payload.tracks.audio ? true : false;
8833
+ mediainfo.hasVideo = payload && payload.tracks && payload.tracks.video ? true : false;
8834
+
8835
+ if (mediainfo.hasAudio && payload.tracks.audio) {
8836
+ var track = payload.tracks.audio;
8837
+ mediainfo.audioChannelCount = track.metadata && track.metadata.channelCount ? track.metadata.channelCount : 0;
8838
+ mediainfo.audioCodec = track.codec;
8839
+ }
8840
+
8841
+ if (mediainfo.hasVideo && payload.tracks.video) {
8842
+ var _track = payload.tracks.video;
8843
+ mediainfo.videoCodec = _track.codec;
8844
+ mediainfo.width = _track.metadata && _track.metadata.width ? _track.metadata.width : 0;
8845
+ mediainfo.height = _track.metadata && _track.metadata.height ? _track.metadata.height : 0;
8846
+ }
8847
+
8848
+ mediainfo.duration = payload.frag && payload.frag.duration ? payload.frag.duration : 0;
8849
+ mediainfo.level = payload.frag && payload.frag.level ? payload.frag.level : 0;
8850
+
8851
+ if (mediainfo.videoCodec || mediainfo.audioCodec) {
8852
+ mediainfo.mimeType = "video/hls; codecs=\"".concat(mediainfo.videoCodec, ";").concat(mediainfo.audioCodec, "\"");
8853
+ }
8854
+
8855
+ player.mediainfo = mediainfo;
8856
+ player.emit("media_info", mediainfo);
8857
+ });
8858
+ this._statisticsTimmer = setInterval(function () {
8859
+ player.emit("statistics_info", statsInfo);
8860
+ statsInfo.speed = 0;
8861
+ }, 1000);
8862
+ }
8863
+ }, {
8864
+ key: "destroy",
8865
+ value: function destroy() {
8866
+ clearInterval(this._statisticsTimmer);
8867
+
8868
+ if (this.hls) {
8869
+ this.hls.destroy();
8870
+ }
8871
+
8872
+ _get(_getPrototypeOf(HlsJsPlayer.prototype), "destroy", this).call(this);
8873
+ }
8874
+ }]);
8875
+
8876
+ return HlsJsPlayer;
8877
+ }(Player__default['default']);
8878
+
8879
+ HlsJsPlayer.isSupported = Hls__default['default'].isSupported;
8880
+ HlsJsPlayer.HlsJs = Hls__default['default'];
8881
+
8531
8882
  function Xgplay(_ref, fRef) {
8532
8883
  var config = _ref.config,
8533
8884
  type = _ref.type,
@@ -8541,7 +8892,7 @@ function Xgplay(_ref, fRef) {
8541
8892
 
8542
8893
  if (ref.current) {
8543
8894
  if ((type === null || type === void 0 ? void 0 : type.indexOf('m3u8')) !== -1) {
8544
- playerRef.current = new HlsJsPlayer__default['default'](_objectSpread2({
8895
+ playerRef.current = new HlsJsPlayer(_objectSpread2({
8545
8896
  el: ref.current,
8546
8897
  width: '100%',
8547
8898
  height: '100%',
@@ -8676,6 +9027,7 @@ function VideoPlayer$1(_ref, ref) {
8676
9027
  layoutIndex = _ref$layoutIndex === void 0 ? 0 : _ref$layoutIndex,
8677
9028
  _ref$url = _ref.url,
8678
9029
  url = _ref$url === void 0 ? [] : _ref$url,
9030
+ onPlayerClose = _ref.onPlayerClose,
8679
9031
  _ref$layouts = _ref.layouts,
8680
9032
  layouts = _ref$layouts === void 0 ? basicLayouts : _ref$layouts;
8681
9033
  var allLayouts = layouts;
@@ -8711,6 +9063,12 @@ function VideoPlayer$1(_ref, ref) {
8711
9063
  players = _useState8[0],
8712
9064
  setPlayers = _useState8[1];
8713
9065
 
9066
+ var handleCloseAll = function handleCloseAll() {
9067
+ setPlayers([]);
9068
+ setUrls([]);
9069
+ setCurrentPlayerIndex(0);
9070
+ };
9071
+
8714
9072
  var renderDom = React.useMemo(function () {
8715
9073
  var arr = new Array(allLayouts[currentLayoutIndex].span).fill(0);
8716
9074
  return arr.map(function (item, index) {
@@ -8732,6 +9090,7 @@ function VideoPlayer$1(_ref, ref) {
8732
9090
 
8733
9091
  arr.splice(index, 1, '');
8734
9092
  setUrls(arr);
9093
+ onPlayerClose && onPlayerClose(index, arr);
8735
9094
  }
8736
9095
  }, /*#__PURE__*/React__default['default'].createElement(icons.CloseOutlined, null))), /*#__PURE__*/React__default['default'].createElement(Xgplay$1, {
8737
9096
  setRef: function setRef(ref) {
@@ -8812,6 +9171,7 @@ function VideoPlayer$1(_ref, ref) {
8812
9171
  currentLayoutIndex: currentLayoutIndex,
8813
9172
  currentPlayerIndex: currentPlayerIndex,
8814
9173
  urls: urls,
9174
+ handleCloseAll: handleCloseAll,
8815
9175
  loadCamera: loadCamera
8816
9176
  };
8817
9177
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "private": false,
3
3
  "name": "wargerm",
4
- "version": "0.7.45",
4
+ "version": "0.7.47",
5
5
  "scripts": {
6
6
  "dev": "dumi dev",
7
7
  "docs:build": "dumi build",
@@ -51,6 +51,7 @@
51
51
  "dayjs": "^1.11.7",
52
52
  "echarts": "^5.2.2",
53
53
  "echarts-for-react": "^3.0.2",
54
+ "hls.js": "^1.4.12",
54
55
  "lodash-es": "^4.17.21",
55
56
  "react-countup": "^6.0.0",
56
57
  "react-dom": "^17.0.2",
@@ -60,8 +61,7 @@
60
61
  "xgplayer": "^2.31.2",
61
62
  "xgplayer-flv": "^2.5.1",
62
63
  "xgplayer-flv.js": "^2.3.0",
63
- "xgplayer-hls": "^2.5.2",
64
- "xgplayer-hls.js": "^2.2.2"
64
+ "xgplayer-hls": "^2.5.2"
65
65
  },
66
66
  "peerDependencies": {
67
67
  "@ant-design/icons": ">=4.2.0",