@vtx/player 1.7.14 → 1.7.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/lib/api/fetch.js +91 -62
- package/lib/api/fetch.js.map +1 -1
- package/lib/api/index.js +63 -18
- package/lib/api/index.js.map +1 -1
- package/lib/api/types.d.ts +5 -5
- package/lib/bd/PlayerManager.js +68 -38
- package/lib/bd/PlayerManager.js.map +1 -1
- package/lib/bill-player/index.d.ts +1 -1
- package/lib/bill-player/index.js +121 -66
- package/lib/bill-player/index.js.map +1 -1
- package/lib/bill-player/style/css.js +9 -0
- package/lib/bill-player/style/css.js.map +1 -1
- package/lib/bill-player/style/index.js +9 -0
- package/lib/bill-player/style/index.js.map +1 -1
- package/lib/bill-player/style/index.less +297 -297
- package/lib/components/set-tag-video/index.js +34 -6
- package/lib/components/set-tag-video/index.js.map +1 -1
- package/lib/components/set-tag-video/style/css.js.map +1 -1
- package/lib/components/set-tag-video/style/index.js.map +1 -1
- package/lib/components/set-tag-video/style/index.less +125 -125
- package/lib/components/split-screen/index.d.ts +1 -1
- package/lib/components/split-screen/index.js +14 -3
- package/lib/components/split-screen/index.js.map +1 -1
- package/lib/components/split-screen/style/css.js.map +1 -1
- package/lib/components/split-screen/style/index.js.map +1 -1
- package/lib/components/tag-video/index.js +38 -10
- package/lib/components/tag-video/index.js.map +1 -1
- package/lib/components/tag-video/style/css.js.map +1 -1
- package/lib/components/tag-video/style/index.js.map +1 -1
- package/lib/components/tag-video/style/index.less +69 -69
- package/lib/components/video-scale/index.d.ts +1 -1
- package/lib/components/video-scale/index.js +9 -2
- package/lib/components/video-scale/index.js.map +1 -1
- package/lib/components/video-scale/style/css.js.map +1 -1
- package/lib/components/video-scale/style/index.js.map +1 -1
- package/lib/context/index.js +4 -0
- package/lib/context/index.js.map +1 -1
- package/lib/controls/index.d.ts +11 -11
- package/lib/controls/index.js +99 -34
- package/lib/controls/index.js.map +1 -1
- package/lib/controls/style/css.js +5 -0
- package/lib/controls/style/css.js.map +1 -1
- package/lib/controls/style/index.js +5 -0
- package/lib/controls/style/index.js.map +1 -1
- package/lib/controls/style/index.less +188 -188
- package/lib/h264/PlayerManager.js +27 -18
- package/lib/h264/PlayerManager.js.map +1 -1
- package/lib/history-control/index.d.ts +2 -2
- package/lib/history-control/index.js +121 -61
- package/lib/history-control/index.js.map +1 -1
- package/lib/history-control/style/css.js +6 -0
- package/lib/history-control/style/css.js.map +1 -1
- package/lib/history-control/style/index.js +6 -0
- package/lib/history-control/style/index.js.map +1 -1
- package/lib/history-control/style/index.less +252 -252
- package/lib/history-control-v2/components/grid-item/index.js +79 -38
- package/lib/history-control-v2/components/grid-item/index.js.map +1 -1
- package/lib/history-control-v2/components/panel/index.js +114 -44
- package/lib/history-control-v2/components/panel/index.js.map +1 -1
- package/lib/history-control-v2/context.js +2 -0
- package/lib/history-control-v2/context.js.map +1 -1
- package/lib/history-control-v2/index.d.ts +4 -4
- package/lib/history-control-v2/index.js +166 -97
- package/lib/history-control-v2/index.js.map +1 -1
- package/lib/history-control-v2/style/css.js +10 -0
- package/lib/history-control-v2/style/css.js.map +1 -1
- package/lib/history-control-v2/style/index.js +10 -0
- package/lib/history-control-v2/style/index.js.map +1 -1
- package/lib/history-control-v2/style/index.less +437 -437
- package/lib/history-control-v2/utils.js +21 -1
- package/lib/history-control-v2/utils.js.map +1 -1
- package/lib/history-player/index.d.ts +3 -3
- package/lib/history-player/index.js +210 -146
- package/lib/history-player/index.js.map +1 -1
- package/lib/history-player/style/css.js +3 -0
- package/lib/history-player/style/css.js.map +1 -1
- package/lib/history-player/style/index.js +3 -0
- package/lib/history-player/style/index.js.map +1 -1
- package/lib/history-player/style/index.less +102 -102
- package/lib/hooks/useSettings.js +6 -1
- package/lib/hooks/useSettings.js.map +1 -1
- package/lib/icc/PlayerManager.js +57 -26
- package/lib/icc/PlayerManager.js.map +1 -1
- package/lib/icc/api.d.ts +68 -0
- package/lib/icc/api.js +16 -2
- package/lib/icc/api.js.map +1 -1
- package/lib/icons/index.d.ts +36 -36
- package/lib/icons/index.js +171 -23
- package/lib/icons/index.js.map +1 -1
- package/lib/icons/index.less +32 -32
- package/lib/index.js +10 -0
- package/lib/index.js.map +1 -1
- package/lib/live-channel-player/index.d.ts +1 -1
- package/lib/live-channel-player/index.js +67 -31
- package/lib/live-channel-player/index.js.map +1 -1
- package/lib/live-channel-player/style/css.js +1 -0
- package/lib/live-channel-player/style/css.js.map +1 -1
- package/lib/live-channel-player/style/index.js +1 -0
- package/lib/live-channel-player/style/index.js.map +1 -1
- package/lib/live-control/index.d.ts +2 -2
- package/lib/live-control/index.js +86 -35
- package/lib/live-control/index.js.map +1 -1
- package/lib/live-control/style/css.js +4 -0
- package/lib/live-control/style/css.js.map +1 -1
- package/lib/live-control/style/index.js +4 -0
- package/lib/live-control/style/index.js.map +1 -1
- package/lib/live-control/style/index.less +99 -99
- package/lib/live-control-v2/index.d.ts +3 -3
- package/lib/live-control-v2/index.js +141 -108
- package/lib/live-control-v2/index.js.map +1 -1
- package/lib/live-control-v2/style/css.js +7 -0
- package/lib/live-control-v2/style/css.js.map +1 -1
- package/lib/live-control-v2/style/index.js +7 -0
- package/lib/live-control-v2/style/index.js.map +1 -1
- package/lib/live-control-v2/style/index.less +192 -192
- package/lib/live-player/index.js +136 -95
- package/lib/live-player/index.js.map +1 -1
- package/lib/live-player/style/css.js +2 -0
- package/lib/live-player/style/css.js.map +1 -1
- package/lib/live-player/style/index.js +2 -0
- package/lib/live-player/style/index.js.map +1 -1
- package/lib/live-player/style/index.less +75 -75
- package/lib/player/index.d.ts +1 -1
- package/lib/player/index.js +244 -79
- package/lib/player/index.js.map +1 -1
- package/lib/rsl/PlayerManager.js +64 -18
- package/lib/rsl/PlayerManager.js.map +1 -1
- package/lib/typings/@vtx/utils/index.d.ts +28 -28
- package/lib/typings/h5player.d.ts +146 -146
- package/lib/typings/webrtcplayer.d.ts +56 -56
- package/lib/typings/wsplayer.d.ts +99 -99
- package/lib/utils/index.d.ts +1 -1
- package/lib/utils/index.js +91 -12
- package/lib/utils/index.js.map +1 -1
- package/lib/vite-env.d.ts +1 -1
- package/lib/vtxHls/PlayerManager.js +20 -6
- package/lib/vtxHls/PlayerManager.js.map +1 -1
- package/lib/vtxHls/WhepManager.js +72 -9
- package/lib/vtxHls/WhepManager.js.map +1 -1
- package/lib/webrtc/PlayerManager.js +41 -28
- package/lib/webrtc/PlayerManager.js.map +1 -1
- package/package.json +125 -125
|
@@ -1,99 +1,99 @@
|
|
|
1
|
-
|
|
2
|
-
export declare class Wsplayer {
|
|
3
|
-
constructor();
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* 播放实时预览视频
|
|
7
|
-
* @param opt.channelList: {Array<Object>} 必填,通道列表
|
|
8
|
-
* @param opt.streamType: {Number|String} 选填,码流类型,不填默认播放辅码流1,若不存在辅码流1,则自动切换到主码流 1-主码流 2-辅码流1 3-辅码流2
|
|
9
|
-
* @param opt.windowIndex: {Number} 选填,指定从哪个窗口开始播放。不填默认从选中的窗口开始播放
|
|
10
|
-
*/
|
|
11
|
-
// channelList: [{
|
|
12
|
-
// id: channelCode, // {String} 通道编码 -- 用于预览,必填
|
|
13
|
-
// isOnline: true, // {Boolean} 是否在线,非在线无法播放 -- 用于预览,必填
|
|
14
|
-
// deviceCode: deviceCode, // {String} 设备编码 -- 用于对讲,对讲必填,无对讲功能可不填
|
|
15
|
-
// deviceType: deviceType, // {String} 设备类型 -- 用于对讲,对讲必填,无对讲功能可不填
|
|
16
|
-
// channelSeq: channelSeq, // {String|Number} 通道序号 -- 用于对讲,对讲必填,无对讲功能可不填
|
|
17
|
-
// cameraType: cameraType, // {String|Number} 摄像头类型 -- 用于云台,云台必填,无云台功能可不填
|
|
18
|
-
// capability: capability, // {String} 能力集 -- 用于云台,选填
|
|
19
|
-
// }]
|
|
20
|
-
playRealVideo(opts: {
|
|
21
|
-
channelList: object[];
|
|
22
|
-
streamType?: string | number;
|
|
23
|
-
windowIndex?: number
|
|
24
|
-
}): void
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* 播放录像回放
|
|
28
|
-
* @param opt.channelList {Array<Object>} 通道集合 必填
|
|
29
|
-
* @param opt.startTime {String|Number} 开始时间 必选 timestamp到秒
|
|
30
|
-
* @param opt.endTime {String|Number} 结束时间 必选 timestamp到秒
|
|
31
|
-
* @param opt.recordSource {String|Number} 录像来源 必选 2表示设备录像 3表示中心录像
|
|
32
|
-
* @param opt.streamType {String|Number} 码流类型 可选
|
|
33
|
-
* @param opt.recordType {String|Number} 录像类型 可选
|
|
34
|
-
*/
|
|
35
|
-
// channelList: [{
|
|
36
|
-
// id: channelCode, // {String} 通道编码 -- 用于回放,必填
|
|
37
|
-
// }]
|
|
38
|
-
playRecordVideo(opts: {
|
|
39
|
-
channelList: object[];
|
|
40
|
-
startTime: string | number;
|
|
41
|
-
endTime: string | number;
|
|
42
|
-
recordSource: string | number;
|
|
43
|
-
streamType?: string | number;
|
|
44
|
-
recordType?: string | number
|
|
45
|
-
}): void;
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* 录像暂停
|
|
49
|
-
* 只有正在播放的录像调用才有效
|
|
50
|
-
*/
|
|
51
|
-
pause(): void;
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* 录像暂停后播放
|
|
55
|
-
* 只有暂停后的录像调用才有效
|
|
56
|
-
*/
|
|
57
|
-
play(): void;
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* 设置播放速度
|
|
61
|
-
* @param speed 倍速
|
|
62
|
-
*/
|
|
63
|
-
playSpeed(speed: 0.125 | 0.25 | 0.5 | 1 | 2 | 4 | 8): void;
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* 关闭窗口
|
|
67
|
-
* @param index 窗口索引
|
|
68
|
-
*/
|
|
69
|
-
close(index?: number): void;
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* 设置全屏
|
|
73
|
-
*/
|
|
74
|
-
setFullScreen(): void;
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* 设置窗口自适应还是拉伸
|
|
78
|
-
* @param {string} playerAdapter selfAdaption 自适应 | stretching 拉伸
|
|
79
|
-
*/
|
|
80
|
-
setPlayerAdapter(playerAdapter: 'selfAdaption' | 'stretching' ): void;
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* 控制视频播放器显示的路数: 1 4 9 16 25,不会超过最大显示路数
|
|
84
|
-
* @param {number} number
|
|
85
|
-
*/
|
|
86
|
-
setPlayerNum(num: 1 | 4 | 9 | 16 | 25): void;
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* 设置选中的播放器的索引
|
|
90
|
-
* @param {number} index
|
|
91
|
-
*/
|
|
92
|
-
setSelectIndex(index: number);
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* 录像跳转播放
|
|
96
|
-
* @param {string} time HH:mm:ss格式
|
|
97
|
-
*/
|
|
98
|
-
jumpPlayByTime(time: string);
|
|
99
|
-
}
|
|
1
|
+
|
|
2
|
+
export declare class Wsplayer {
|
|
3
|
+
constructor();
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 播放实时预览视频
|
|
7
|
+
* @param opt.channelList: {Array<Object>} 必填,通道列表
|
|
8
|
+
* @param opt.streamType: {Number|String} 选填,码流类型,不填默认播放辅码流1,若不存在辅码流1,则自动切换到主码流 1-主码流 2-辅码流1 3-辅码流2
|
|
9
|
+
* @param opt.windowIndex: {Number} 选填,指定从哪个窗口开始播放。不填默认从选中的窗口开始播放
|
|
10
|
+
*/
|
|
11
|
+
// channelList: [{
|
|
12
|
+
// id: channelCode, // {String} 通道编码 -- 用于预览,必填
|
|
13
|
+
// isOnline: true, // {Boolean} 是否在线,非在线无法播放 -- 用于预览,必填
|
|
14
|
+
// deviceCode: deviceCode, // {String} 设备编码 -- 用于对讲,对讲必填,无对讲功能可不填
|
|
15
|
+
// deviceType: deviceType, // {String} 设备类型 -- 用于对讲,对讲必填,无对讲功能可不填
|
|
16
|
+
// channelSeq: channelSeq, // {String|Number} 通道序号 -- 用于对讲,对讲必填,无对讲功能可不填
|
|
17
|
+
// cameraType: cameraType, // {String|Number} 摄像头类型 -- 用于云台,云台必填,无云台功能可不填
|
|
18
|
+
// capability: capability, // {String} 能力集 -- 用于云台,选填
|
|
19
|
+
// }]
|
|
20
|
+
playRealVideo(opts: {
|
|
21
|
+
channelList: object[];
|
|
22
|
+
streamType?: string | number;
|
|
23
|
+
windowIndex?: number
|
|
24
|
+
}): void
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* 播放录像回放
|
|
28
|
+
* @param opt.channelList {Array<Object>} 通道集合 必填
|
|
29
|
+
* @param opt.startTime {String|Number} 开始时间 必选 timestamp到秒
|
|
30
|
+
* @param opt.endTime {String|Number} 结束时间 必选 timestamp到秒
|
|
31
|
+
* @param opt.recordSource {String|Number} 录像来源 必选 2表示设备录像 3表示中心录像
|
|
32
|
+
* @param opt.streamType {String|Number} 码流类型 可选
|
|
33
|
+
* @param opt.recordType {String|Number} 录像类型 可选
|
|
34
|
+
*/
|
|
35
|
+
// channelList: [{
|
|
36
|
+
// id: channelCode, // {String} 通道编码 -- 用于回放,必填
|
|
37
|
+
// }]
|
|
38
|
+
playRecordVideo(opts: {
|
|
39
|
+
channelList: object[];
|
|
40
|
+
startTime: string | number;
|
|
41
|
+
endTime: string | number;
|
|
42
|
+
recordSource: string | number;
|
|
43
|
+
streamType?: string | number;
|
|
44
|
+
recordType?: string | number
|
|
45
|
+
}): void;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* 录像暂停
|
|
49
|
+
* 只有正在播放的录像调用才有效
|
|
50
|
+
*/
|
|
51
|
+
pause(): void;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* 录像暂停后播放
|
|
55
|
+
* 只有暂停后的录像调用才有效
|
|
56
|
+
*/
|
|
57
|
+
play(): void;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* 设置播放速度
|
|
61
|
+
* @param speed 倍速
|
|
62
|
+
*/
|
|
63
|
+
playSpeed(speed: 0.125 | 0.25 | 0.5 | 1 | 2 | 4 | 8): void;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* 关闭窗口
|
|
67
|
+
* @param index 窗口索引
|
|
68
|
+
*/
|
|
69
|
+
close(index?: number): void;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* 设置全屏
|
|
73
|
+
*/
|
|
74
|
+
setFullScreen(): void;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* 设置窗口自适应还是拉伸
|
|
78
|
+
* @param {string} playerAdapter selfAdaption 自适应 | stretching 拉伸
|
|
79
|
+
*/
|
|
80
|
+
setPlayerAdapter(playerAdapter: 'selfAdaption' | 'stretching' ): void;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* 控制视频播放器显示的路数: 1 4 9 16 25,不会超过最大显示路数
|
|
84
|
+
* @param {number} number
|
|
85
|
+
*/
|
|
86
|
+
setPlayerNum(num: 1 | 4 | 9 | 16 | 25): void;
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* 设置选中的播放器的索引
|
|
90
|
+
* @param {number} index
|
|
91
|
+
*/
|
|
92
|
+
setSelectIndex(index: number);
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* 录像跳转播放
|
|
96
|
+
* @param {string} time HH:mm:ss格式
|
|
97
|
+
*/
|
|
98
|
+
jumpPlayByTime(time: string);
|
|
99
|
+
}
|
package/lib/utils/index.d.ts
CHANGED
package/lib/utils/index.js
CHANGED
|
@@ -9,71 +9,103 @@ exports.guidGenerator = void 0;
|
|
|
9
9
|
exports.loadCss = loadCss;
|
|
10
10
|
exports.loadJs = loadJs;
|
|
11
11
|
exports.secondsToTime = exports.secondsToString = void 0;
|
|
12
|
+
|
|
12
13
|
var _jsBase = require("js-base64");
|
|
14
|
+
|
|
13
15
|
var _moment = _interopRequireDefault(require("moment"));
|
|
16
|
+
|
|
14
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
18
|
+
|
|
15
19
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
20
|
+
|
|
16
21
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
22
|
+
|
|
17
23
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
18
|
-
|
|
19
|
-
function
|
|
24
|
+
|
|
25
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
26
|
+
|
|
27
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
28
|
+
|
|
20
29
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
30
|
+
|
|
21
31
|
/** 时间格式枚举 */
|
|
22
32
|
var TimeFormat;
|
|
23
33
|
exports.TimeFormat = TimeFormat;
|
|
34
|
+
|
|
24
35
|
(function (TimeFormat) {
|
|
25
36
|
TimeFormat["default"] = "YYYY-MM-DDTHH:mm:ss";
|
|
26
37
|
TimeFormat["params"] = "YYYY-MM-DD HH:mm:ss";
|
|
27
38
|
TimeFormat["url"] = "YYYYMMDDTHHmmss";
|
|
28
39
|
})(TimeFormat || (exports.TimeFormat = TimeFormat = {}));
|
|
29
40
|
/** 生成随机ID */
|
|
41
|
+
|
|
42
|
+
|
|
30
43
|
var guidGenerator = function guidGenerator() {
|
|
31
44
|
var S4 = function S4() {
|
|
32
45
|
return ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1);
|
|
33
46
|
};
|
|
47
|
+
|
|
34
48
|
return S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4();
|
|
35
49
|
};
|
|
50
|
+
|
|
36
51
|
exports.guidGenerator = guidGenerator;
|
|
52
|
+
|
|
37
53
|
var initProtocol = function initProtocol(url, enableAgent) {
|
|
38
54
|
var src = url;
|
|
55
|
+
|
|
39
56
|
if (enableAgent) {
|
|
40
57
|
var isHttps = 'https:' === document.location.protocol;
|
|
58
|
+
|
|
41
59
|
if (url.startsWith('http:')) {
|
|
42
60
|
url = url.replace('http://', '');
|
|
61
|
+
|
|
43
62
|
if (url.startsWith('https:')) {
|
|
44
63
|
url = url.replace('https://', '');
|
|
45
64
|
}
|
|
65
|
+
|
|
46
66
|
var ipPort = url.substring(0, url.indexOf('/'));
|
|
47
67
|
var path = url.substring(url.indexOf('/'));
|
|
48
68
|
src = '/visProxy/' + ipPort + '/play' + path;
|
|
49
69
|
} else if (url.startsWith('ws:')) {
|
|
50
70
|
url = url.replace('ws://', '');
|
|
71
|
+
|
|
51
72
|
if (url.startsWith('wss:')) {
|
|
52
73
|
url = url.replace('wss://', '');
|
|
53
74
|
}
|
|
75
|
+
|
|
54
76
|
var _ipPort = url.substring(0, url.indexOf('/'));
|
|
77
|
+
|
|
55
78
|
var _path = url.substring(url.indexOf('/'));
|
|
79
|
+
|
|
56
80
|
var protocol = isHttps ? 'wss://' : 'ws://';
|
|
57
81
|
src = protocol + window.location.host + '/visProxy/' + _ipPort + '/play' + _path;
|
|
58
82
|
}
|
|
59
83
|
} else {
|
|
60
84
|
var _isHttps = 'https:' === document.location.protocol;
|
|
85
|
+
|
|
61
86
|
if (_isHttps) {
|
|
62
87
|
if (url.startsWith('http:')) {
|
|
63
88
|
url = url.replace('http://', '');
|
|
89
|
+
|
|
64
90
|
var _ipPort2 = url.substring(0, url.indexOf('/'));
|
|
91
|
+
|
|
65
92
|
var _path2 = url.substring(url.indexOf('/'));
|
|
93
|
+
|
|
66
94
|
src = '/visProxy/' + _ipPort2 + '/play' + _path2;
|
|
67
95
|
} else if (url.startsWith('ws:')) {
|
|
68
96
|
url = url.replace('ws://', '');
|
|
97
|
+
|
|
69
98
|
var _ipPort3 = url.substring(0, url.indexOf('/'));
|
|
99
|
+
|
|
70
100
|
var _path3 = url.substring(url.indexOf('/'));
|
|
101
|
+
|
|
71
102
|
src = 'wss://' + window.location.host + '/visProxy/' + _ipPort3 + '/play' + _path3;
|
|
72
103
|
} else {
|
|
73
104
|
src = url;
|
|
74
105
|
}
|
|
75
106
|
}
|
|
76
107
|
}
|
|
108
|
+
|
|
77
109
|
return src;
|
|
78
110
|
};
|
|
79
111
|
/**
|
|
@@ -81,9 +113,12 @@ var initProtocol = function initProtocol(url, enableAgent) {
|
|
|
81
113
|
* @param url
|
|
82
114
|
* @returns
|
|
83
115
|
*/
|
|
116
|
+
|
|
117
|
+
|
|
84
118
|
var getPlayerParams = function getPlayerParams(type, url, enableAgent, live) {
|
|
85
119
|
var playerUrl = url;
|
|
86
120
|
var playerType = 'mp4';
|
|
121
|
+
|
|
87
122
|
if (type === 'bd') {
|
|
88
123
|
if (url.startsWith('http')) {
|
|
89
124
|
return {
|
|
@@ -91,11 +126,13 @@ var getPlayerParams = function getPlayerParams(type, url, enableAgent, live) {
|
|
|
91
126
|
url: url
|
|
92
127
|
};
|
|
93
128
|
}
|
|
129
|
+
|
|
94
130
|
return {
|
|
95
131
|
type: 'bd',
|
|
96
132
|
url: "".concat(window.location.origin).concat(url)
|
|
97
133
|
};
|
|
98
134
|
}
|
|
135
|
+
|
|
99
136
|
if (type === 'vtx_ws') {
|
|
100
137
|
return {
|
|
101
138
|
type: 'vtx_ws',
|
|
@@ -107,50 +144,60 @@ var getPlayerParams = function getPlayerParams(type, url, enableAgent, live) {
|
|
|
107
144
|
} else {
|
|
108
145
|
playerType = 'hk_ws';
|
|
109
146
|
}
|
|
147
|
+
|
|
110
148
|
if (live) {
|
|
111
149
|
playerUrl = url;
|
|
112
150
|
} else {
|
|
113
151
|
playerUrl = url.split('?')[0];
|
|
114
152
|
}
|
|
115
153
|
}
|
|
154
|
+
|
|
116
155
|
if (url.startsWith('rtsp://')) {
|
|
117
156
|
var baseUrlPrefix = process.env.PREFIX ? "".concat(process.env.PREFIX) : '';
|
|
118
157
|
playerType = 'flv';
|
|
119
158
|
playerUrl = baseUrlPrefix + "/cloud/vic/convert/flv/live.flv?url=".concat(_jsBase.Base64.encode(url));
|
|
120
159
|
}
|
|
160
|
+
|
|
121
161
|
if (url.indexOf('flv') > -1) {
|
|
122
162
|
playerUrl = url;
|
|
123
163
|
playerType = 'flv';
|
|
124
164
|
}
|
|
165
|
+
|
|
125
166
|
if (url.indexOf('m3u8') > -1) {
|
|
126
167
|
playerUrl = url;
|
|
127
168
|
playerType = 'hls';
|
|
128
|
-
}
|
|
129
|
-
|
|
169
|
+
} // 特殊类型
|
|
170
|
+
|
|
171
|
+
|
|
130
172
|
if (url.indexOf('vtxm3u8') > -1) {
|
|
131
173
|
playerUrl = url;
|
|
132
174
|
playerType = 'vtxhls';
|
|
133
|
-
}
|
|
134
|
-
|
|
175
|
+
} // 特殊类型
|
|
176
|
+
|
|
177
|
+
|
|
135
178
|
if (url.indexOf('vtxwhep') > -1) {
|
|
136
179
|
playerUrl = url;
|
|
137
180
|
playerType = 'vtxwhep';
|
|
138
181
|
}
|
|
182
|
+
|
|
139
183
|
if (url.indexOf('webrtc') > -1) {
|
|
140
184
|
playerUrl = url;
|
|
141
185
|
playerType = 'webrtc';
|
|
142
186
|
}
|
|
187
|
+
|
|
143
188
|
if (url.indexOf('h264') > -1 || url.indexOf('cloudFile') > -1) {
|
|
144
189
|
playerUrl = url;
|
|
145
190
|
playerType = 'h264';
|
|
146
|
-
}
|
|
147
|
-
|
|
191
|
+
} // rsl
|
|
192
|
+
|
|
193
|
+
|
|
148
194
|
if (playerType === 'mp4' || playerType === 'iframe' || playerType === 'rsl') {
|
|
149
195
|
return {
|
|
150
196
|
type: playerType,
|
|
151
197
|
url: url
|
|
152
198
|
};
|
|
153
199
|
}
|
|
200
|
+
|
|
154
201
|
return {
|
|
155
202
|
url: initProtocol(playerUrl, enableAgent),
|
|
156
203
|
type: playerType
|
|
@@ -161,7 +208,10 @@ var getPlayerParams = function getPlayerParams(type, url, enableAgent, live) {
|
|
|
161
208
|
* @param data
|
|
162
209
|
* @returns
|
|
163
210
|
*/
|
|
211
|
+
|
|
212
|
+
|
|
164
213
|
exports.getPlayerParams = getPlayerParams;
|
|
214
|
+
|
|
165
215
|
var getUrlTableData = function getUrlTableData(data) {
|
|
166
216
|
var result = data.list.map(function (item, i) {
|
|
167
217
|
var beginTime = (0, _moment["default"])(item.beginTime);
|
|
@@ -195,7 +245,10 @@ var getUrlTableData = function getUrlTableData(data) {
|
|
|
195
245
|
* @param bytes
|
|
196
246
|
* @returns
|
|
197
247
|
*/
|
|
248
|
+
|
|
249
|
+
|
|
198
250
|
exports.getUrlTableData = getUrlTableData;
|
|
251
|
+
|
|
199
252
|
var bytesToMegaBytes = function bytesToMegaBytes(bytes) {
|
|
200
253
|
return "".concat((bytes / Math.pow(1024, 2)).toFixed(2), "MB");
|
|
201
254
|
};
|
|
@@ -204,7 +257,10 @@ var bytesToMegaBytes = function bytesToMegaBytes(bytes) {
|
|
|
204
257
|
* @param total
|
|
205
258
|
* @returns
|
|
206
259
|
*/
|
|
260
|
+
|
|
261
|
+
|
|
207
262
|
exports.bytesToMegaBytes = bytesToMegaBytes;
|
|
263
|
+
|
|
208
264
|
var secondsToString = function secondsToString(total) {
|
|
209
265
|
var hour = Math.floor(total / 3600);
|
|
210
266
|
var minute = Math.floor(total % 3600 / 60);
|
|
@@ -217,7 +273,10 @@ var secondsToString = function secondsToString(total) {
|
|
|
217
273
|
* @param total
|
|
218
274
|
* @returns
|
|
219
275
|
*/
|
|
276
|
+
|
|
277
|
+
|
|
220
278
|
exports.secondsToString = secondsToString;
|
|
279
|
+
|
|
221
280
|
var secondsToTime = function secondsToTime(total) {
|
|
222
281
|
var hour = Math.floor(total / 3600);
|
|
223
282
|
var minute = Math.floor(total % 3600 / 60);
|
|
@@ -230,7 +289,10 @@ var secondsToTime = function secondsToTime(total) {
|
|
|
230
289
|
* @param time 时间
|
|
231
290
|
* @returns
|
|
232
291
|
*/
|
|
292
|
+
|
|
293
|
+
|
|
233
294
|
exports.secondsToTime = secondsToTime;
|
|
295
|
+
|
|
234
296
|
var getHKTimeString = function getHKTimeString(time) {
|
|
235
297
|
return (0, _moment["default"])(time).format(TimeFormat["default"]) + 'Z';
|
|
236
298
|
};
|
|
@@ -241,12 +303,16 @@ var getHKTimeString = function getHKTimeString(time) {
|
|
|
241
303
|
* @param endTime 结束时间
|
|
242
304
|
* @returns
|
|
243
305
|
*/
|
|
306
|
+
|
|
307
|
+
|
|
244
308
|
exports.getHKTimeString = getHKTimeString;
|
|
309
|
+
|
|
245
310
|
var getHKListUrl = function getHKListUrl(totalUrl, startTime, endTime) {
|
|
246
311
|
var _totalUrl$split = totalUrl.split('?'),
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
312
|
+
_totalUrl$split2 = _slicedToArray(_totalUrl$split, 2),
|
|
313
|
+
url = _totalUrl$split2[0],
|
|
314
|
+
query = _totalUrl$split2[1];
|
|
315
|
+
|
|
250
316
|
var urlParams = new URLSearchParams(query);
|
|
251
317
|
urlParams.set('beginTime', getHKTimeString(startTime));
|
|
252
318
|
urlParams.set('endTime', getHKTimeString(endTime));
|
|
@@ -271,21 +337,27 @@ var getHKListUrl = function getHKListUrl(totalUrl, startTime, endTime) {
|
|
|
271
337
|
// urlParams.set('endTime', moment(endTime).format(TimeFormat.url));
|
|
272
338
|
// return `${url}?${urlParams.toString()}`;
|
|
273
339
|
// };
|
|
340
|
+
|
|
274
341
|
/**
|
|
275
342
|
* 获取地址栏中的参数信息
|
|
276
343
|
* @param key 字段key
|
|
277
344
|
* @param href 链接
|
|
278
345
|
* @returns 字段值
|
|
279
346
|
*/
|
|
347
|
+
|
|
348
|
+
|
|
280
349
|
exports.getHKListUrl = getHKListUrl;
|
|
350
|
+
|
|
281
351
|
var getUrlParam = function getUrlParam(key) {
|
|
282
352
|
var href = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window.location.href;
|
|
283
353
|
var paramObj = {};
|
|
284
354
|
var matchList = href.match(/([^\?&]+)=([^\?&#]+)/g) || [];
|
|
355
|
+
|
|
285
356
|
for (var i = 0, len = matchList.length; i < len; i++) {
|
|
286
357
|
var r = matchList[i].match(/([^\?&]+)=([^\?&]+)/);
|
|
287
358
|
paramObj[r[1]] = r[2];
|
|
288
359
|
}
|
|
360
|
+
|
|
289
361
|
if (key) {
|
|
290
362
|
return paramObj[key];
|
|
291
363
|
} else {
|
|
@@ -296,28 +368,35 @@ var getUrlParam = function getUrlParam(key) {
|
|
|
296
368
|
*
|
|
297
369
|
* @returns 返回UUID
|
|
298
370
|
*/
|
|
371
|
+
|
|
372
|
+
|
|
299
373
|
exports.getUrlParam = getUrlParam;
|
|
374
|
+
|
|
300
375
|
function guid() {
|
|
301
376
|
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
302
377
|
var r = Math.random() * 16 | 0,
|
|
303
|
-
|
|
378
|
+
v = c == 'x' ? r : r & 0x3 | 0x8;
|
|
304
379
|
return v.toString(16);
|
|
305
380
|
});
|
|
306
381
|
}
|
|
382
|
+
|
|
307
383
|
function loadJs(path) {
|
|
308
384
|
if (!path || path.length === 0) {
|
|
309
385
|
throw new Error('argument "path" is required !');
|
|
310
386
|
}
|
|
387
|
+
|
|
311
388
|
var head = document.getElementsByTagName('head')[0];
|
|
312
389
|
var script = document.createElement('script');
|
|
313
390
|
script.src = path;
|
|
314
391
|
script.type = 'text/javascript';
|
|
315
392
|
head.appendChild(script);
|
|
316
393
|
}
|
|
394
|
+
|
|
317
395
|
function loadCss(path) {
|
|
318
396
|
if (!path || path.length === 0) {
|
|
319
397
|
throw new Error('argument "path" is required !');
|
|
320
398
|
}
|
|
399
|
+
|
|
321
400
|
var head = document.getElementsByTagName('head')[0];
|
|
322
401
|
var link = document.createElement('link');
|
|
323
402
|
link.href = path;
|
package/lib/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_jsBase","require","_moment","_interopRequireDefault","obj","__esModule","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","n","Object","prototype","toString","call","slice","constructor","name","Array","from","test","len","length","arr2","_i","Symbol","iterator","_s","_e","_x","_r","_arr","_n","_d","next","done","push","value","err","isArray","TimeFormat","exports","guidGenerator","S4","Math","random","substring","initProtocol","url","enableAgent","src","isHttps","document","location","protocol","startsWith","replace","ipPort","indexOf","path","window","host","getPlayerParams","type","live","playerUrl","playerType","concat","origin","split","baseUrlPrefix","process","env","PREFIX","Base64","encode","getUrlTableData","data","result","list","map","item","beginTime","moment","endTime","totalSeconds","diff","index","deviceName","deviceCode","devicePort","deviceIp","streamType","channelName","format","params","size","bytesToMegaBytes","duration","secondsToString","downloadUrl","playbackUrl","code","hkType","deviceId","channelNum","bytes","pow","toFixed","total","hour","floor","minute","second","secondsToTime","getHKTimeString","time","getHKListUrl","totalUrl","startTime","_totalUrl$split","_totalUrl$split2","query","urlParams","URLSearchParams","set","getUrlParam","key","href","arguments","undefined","paramObj","matchList","match","r","guid","c","v","loadJs","Error","head","getElementsByTagName","script","createElement","appendChild","loadCss","link","rel"],"sources":["utils/index.js"],"sourcesContent":["import { Base64 } from 'js-base64';\nimport moment from 'moment';\n/** 时间格式枚举 */\nexport var TimeFormat;\n(function (TimeFormat) {\n TimeFormat[\"default\"] = \"YYYY-MM-DDTHH:mm:ss\";\n TimeFormat[\"params\"] = \"YYYY-MM-DD HH:mm:ss\";\n TimeFormat[\"url\"] = \"YYYYMMDDTHHmmss\";\n})(TimeFormat || (TimeFormat = {}));\n/** 生成随机ID */\nexport const guidGenerator = () => {\n const S4 = function () {\n return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\n };\n return S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4();\n};\nconst initProtocol = (url, enableAgent) => {\n let src = url;\n if (enableAgent) {\n const isHttps = 'https:' === document.location.protocol;\n if (url.startsWith('http:')) {\n url = url.replace('http://', '');\n if (url.startsWith('https:')) {\n url = url.replace('https://', '');\n }\n const ipPort = url.substring(0, url.indexOf('/'));\n const path = url.substring(url.indexOf('/'));\n src = '/visProxy/' + ipPort + '/play' + path;\n }\n else if (url.startsWith('ws:')) {\n url = url.replace('ws://', '');\n if (url.startsWith('wss:')) {\n url = url.replace('wss://', '');\n }\n const ipPort = url.substring(0, url.indexOf('/'));\n const path = url.substring(url.indexOf('/'));\n const protocol = isHttps ? 'wss://' : 'ws://';\n src = protocol + window.location.host + '/visProxy/' + ipPort + '/play' + path;\n }\n }\n else {\n const isHttps = 'https:' === document.location.protocol;\n if (isHttps) {\n if (url.startsWith('http:')) {\n url = url.replace('http://', '');\n const ipPort = url.substring(0, url.indexOf('/'));\n const path = url.substring(url.indexOf('/'));\n src = '/visProxy/' + ipPort + '/play' + path;\n }\n else if (url.startsWith('ws:')) {\n url = url.replace('ws://', '');\n const ipPort = url.substring(0, url.indexOf('/'));\n const path = url.substring(url.indexOf('/'));\n src = 'wss://' + window.location.host + '/visProxy/' + ipPort + '/play' + path;\n }\n else {\n src = url;\n }\n }\n }\n return src;\n};\n/**\n * 获取视频直播地址及格式\n * @param url\n * @returns\n */\nexport const getPlayerParams = (type, url, enableAgent, live) => {\n let playerUrl = url;\n let playerType = 'mp4';\n if (type === 'bd') {\n if (url.startsWith('http')) {\n return {\n type: 'bd',\n url,\n };\n }\n return {\n type: 'bd',\n url: `${window.location.origin}${url}`,\n };\n }\n if (type === 'vtx_ws') {\n return {\n type: 'vtx_ws',\n url,\n };\n }\n else if (url.startsWith('ws://') || url.startsWith('wss://')) {\n if (type === 'hkcar_ws') {\n playerType = 'hkcar_ws';\n }\n else {\n playerType = 'hk_ws';\n }\n if (live) {\n playerUrl = url;\n }\n else {\n playerUrl = url.split('?')[0];\n }\n }\n if (url.startsWith('rtsp://')) {\n const baseUrlPrefix = process.env.PREFIX ? `${process.env.PREFIX}` : '';\n playerType = 'flv';\n playerUrl = baseUrlPrefix + `/cloud/vic/convert/flv/live.flv?url=${Base64.encode(url)}`;\n }\n if (url.indexOf('flv') > -1) {\n playerUrl = url;\n playerType = 'flv';\n }\n if (url.indexOf('m3u8') > -1) {\n playerUrl = url;\n playerType = 'hls';\n }\n // 特殊类型\n if (url.indexOf('vtxm3u8') > -1) {\n playerUrl = url;\n playerType = 'vtxhls';\n }\n // 特殊类型\n if (url.indexOf('vtxwhep') > -1) {\n playerUrl = url;\n playerType = 'vtxwhep';\n }\n if (url.indexOf('webrtc') > -1) {\n playerUrl = url;\n playerType = 'webrtc';\n }\n if (url.indexOf('h264') > -1 || url.indexOf('cloudFile') > -1) {\n playerUrl = url;\n playerType = 'h264';\n }\n // rsl\n if (playerType === 'mp4' || playerType === 'iframe' || playerType === 'rsl') {\n return {\n type: playerType,\n url,\n };\n }\n return { url: initProtocol(playerUrl, enableAgent), type: playerType };\n};\n/**\n * 获取历史回放表格数据\n * @param data\n * @returns\n */\nexport const getUrlTableData = (data) => {\n const result = data.list.map((item, i) => {\n const beginTime = moment(item.beginTime);\n const endTime = moment(item.endTime);\n const totalSeconds = moment(endTime).diff(moment(beginTime), 'seconds');\n return {\n index: i + 1,\n deviceName: data.deviceName,\n deviceCode: data.deviceCode,\n devicePort: data.devicePort,\n deviceIp: data.deviceIp,\n streamType: data.streamType,\n channelName: data.channelName,\n beginTime: beginTime.format(TimeFormat.params),\n endTime: endTime.format(TimeFormat.params),\n size: bytesToMegaBytes(item.size),\n duration: secondsToString(totalSeconds),\n downloadUrl: '',\n url: item.playbackUrl || '',\n enableAgent: data.enableAgent || false,\n code: item.code,\n hkType: data.hkType,\n deviceId: data.deviceId,\n channelNum: data.channelNum,\n };\n });\n return result;\n};\n/**\n * bytes转换mb\n * @param bytes\n * @returns\n */\nexport const bytesToMegaBytes = (bytes) => `${(bytes / Math.pow(1024, 2)).toFixed(2)}MB`;\n/**\n * 秒数=>0时0分0秒\n * @param total\n * @returns\n */\nexport const secondsToString = (total) => {\n const hour = Math.floor(total / 3600);\n const minute = Math.floor((total % 3600) / 60);\n const second = Math.floor(total % 60);\n const result = `${hour > 0 ? hour + '小时' : ''}${minute > 0 ? minute + '分' : ''}${second > 0 ? second + '秒' : ''}`;\n return result;\n};\n/**\n * 秒数=>00:00:00\n * @param total\n * @returns\n */\nexport const secondsToTime = (total) => {\n const hour = Math.floor(total / 3600);\n const minute = Math.floor((total % 3600) / 60);\n const second = Math.floor(total % 60);\n const result = `${hour >= 10 ? hour : '0' + hour}:${minute >= 10 ? minute : '0' + minute}:${second >= 10 ? second : '0' + second}`;\n return result;\n};\n/**\n * 获取海康时间参数\n * @param time 时间\n * @returns\n */\nexport const getHKTimeString = (time) => {\n return moment(time).format(TimeFormat.default) + 'Z';\n};\n/**\n * 获取海康分段播放地址\n * @param totalUrl 总播放地址\n * @param startTime 开始时间\n * @param endTime 结束时间\n * @returns\n */\nexport const getHKListUrl = (totalUrl, startTime, endTime) => {\n const [url, query] = totalUrl.split('?');\n const urlParams = new URLSearchParams(query);\n urlParams.set('beginTime', getHKTimeString(startTime));\n urlParams.set('endTime', getHKTimeString(endTime));\n return `${url}?${urlParams.toString()}`;\n};\n/**\n *\n * 获取flv格式分段播放地址\n * @param totalUrl 总播放地址\n * @param startTime 开始时间\n * @param endTime 结束时间\n * @returns\n */\n// export const getFlvListUrl = (\n// totalUrl: string,\n// startTime: moment.MomentInput,\n// endTime: moment.MomentInput\n// ) => {\n// const [url, query] = totalUrl.split('?');\n// const urlParams = new URLSearchParams(query);\n// urlParams.set('beginTime', moment(startTime).format(TimeFormat.url));\n// urlParams.set('endTime', moment(endTime).format(TimeFormat.url));\n// return `${url}?${urlParams.toString()}`;\n// };\n/**\n * 获取地址栏中的参数信息\n * @param key 字段key\n * @param href 链接\n * @returns 字段值\n */\nexport const getUrlParam = (key, href = window.location.href) => {\n const paramObj = {};\n const matchList = href.match(/([^\\?&]+)=([^\\?&#]+)/g) || [];\n for (let i = 0, len = matchList.length; i < len; i++) {\n const r = matchList[i].match(/([^\\?&]+)=([^\\?&]+)/);\n paramObj[r[1]] = r[2];\n }\n if (key) {\n return paramObj[key];\n }\n else {\n return paramObj;\n }\n};\n/**\n *\n * @returns 返回UUID\n */\nexport function guid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\nexport function loadJs(path) {\n if (!path || path.length === 0) {\n throw new Error('argument \"path\" is required !');\n }\n const head = document.getElementsByTagName('head')[0];\n const script = document.createElement('script');\n script.src = path;\n script.type = 'text/javascript';\n head.appendChild(script);\n}\nexport function loadCss(path) {\n if (!path || path.length === 0) {\n throw new Error('argument \"path\" is required !');\n }\n const head = document.getElementsByTagName('head')[0];\n const link = document.createElement('link');\n link.href = path;\n link.rel = 'stylesheet';\n link.type = 'text/css';\n head.appendChild(link);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["TimeFormat","guidGenerator","S4","Math","random","toString","substring","initProtocol","url","enableAgent","src","isHttps","document","location","protocol","startsWith","replace","ipPort","indexOf","path","window","host","getPlayerParams","type","live","playerUrl","playerType","origin","split","baseUrlPrefix","process","env","PREFIX","Base64","encode","getUrlTableData","data","result","list","map","item","i","beginTime","moment","endTime","totalSeconds","diff","index","deviceName","deviceCode","devicePort","deviceIp","streamType","channelName","format","params","size","bytesToMegaBytes","duration","secondsToString","downloadUrl","playbackUrl","code","hkType","deviceId","channelNum","bytes","pow","toFixed","total","hour","floor","minute","second","secondsToTime","getHKTimeString","time","getHKListUrl","totalUrl","startTime","query","urlParams","URLSearchParams","set","getUrlParam","key","href","paramObj","matchList","match","len","length","r","guid","c","v","loadJs","Error","head","getElementsByTagName","script","createElement","appendChild","loadCss","link","rel"],"sources":["utils/index.js"],"sourcesContent":["import { Base64 } from 'js-base64';\nimport moment from 'moment';\n/** 时间格式枚举 */\nexport var TimeFormat;\n(function (TimeFormat) {\n TimeFormat[\"default\"] = \"YYYY-MM-DDTHH:mm:ss\";\n TimeFormat[\"params\"] = \"YYYY-MM-DD HH:mm:ss\";\n TimeFormat[\"url\"] = \"YYYYMMDDTHHmmss\";\n})(TimeFormat || (TimeFormat = {}));\n/** 生成随机ID */\nexport const guidGenerator = () => {\n const S4 = function () {\n return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\n };\n return S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4();\n};\nconst initProtocol = (url, enableAgent) => {\n let src = url;\n if (enableAgent) {\n const isHttps = 'https:' === document.location.protocol;\n if (url.startsWith('http:')) {\n url = url.replace('http://', '');\n if (url.startsWith('https:')) {\n url = url.replace('https://', '');\n }\n const ipPort = url.substring(0, url.indexOf('/'));\n const path = url.substring(url.indexOf('/'));\n src = '/visProxy/' + ipPort + '/play' + path;\n }\n else if (url.startsWith('ws:')) {\n url = url.replace('ws://', '');\n if (url.startsWith('wss:')) {\n url = url.replace('wss://', '');\n }\n const ipPort = url.substring(0, url.indexOf('/'));\n const path = url.substring(url.indexOf('/'));\n const protocol = isHttps ? 'wss://' : 'ws://';\n src = protocol + window.location.host + '/visProxy/' + ipPort + '/play' + path;\n }\n }\n else {\n const isHttps = 'https:' === document.location.protocol;\n if (isHttps) {\n if (url.startsWith('http:')) {\n url = url.replace('http://', '');\n const ipPort = url.substring(0, url.indexOf('/'));\n const path = url.substring(url.indexOf('/'));\n src = '/visProxy/' + ipPort + '/play' + path;\n }\n else if (url.startsWith('ws:')) {\n url = url.replace('ws://', '');\n const ipPort = url.substring(0, url.indexOf('/'));\n const path = url.substring(url.indexOf('/'));\n src = 'wss://' + window.location.host + '/visProxy/' + ipPort + '/play' + path;\n }\n else {\n src = url;\n }\n }\n }\n return src;\n};\n/**\n * 获取视频直播地址及格式\n * @param url\n * @returns\n */\nexport const getPlayerParams = (type, url, enableAgent, live) => {\n let playerUrl = url;\n let playerType = 'mp4';\n if (type === 'bd') {\n if (url.startsWith('http')) {\n return {\n type: 'bd',\n url,\n };\n }\n return {\n type: 'bd',\n url: `${window.location.origin}${url}`,\n };\n }\n if (type === 'vtx_ws') {\n return {\n type: 'vtx_ws',\n url,\n };\n }\n else if (url.startsWith('ws://') || url.startsWith('wss://')) {\n if (type === 'hkcar_ws') {\n playerType = 'hkcar_ws';\n }\n else {\n playerType = 'hk_ws';\n }\n if (live) {\n playerUrl = url;\n }\n else {\n playerUrl = url.split('?')[0];\n }\n }\n if (url.startsWith('rtsp://')) {\n const baseUrlPrefix = process.env.PREFIX ? `${process.env.PREFIX}` : '';\n playerType = 'flv';\n playerUrl = baseUrlPrefix + `/cloud/vic/convert/flv/live.flv?url=${Base64.encode(url)}`;\n }\n if (url.indexOf('flv') > -1) {\n playerUrl = url;\n playerType = 'flv';\n }\n if (url.indexOf('m3u8') > -1) {\n playerUrl = url;\n playerType = 'hls';\n }\n // 特殊类型\n if (url.indexOf('vtxm3u8') > -1) {\n playerUrl = url;\n playerType = 'vtxhls';\n }\n // 特殊类型\n if (url.indexOf('vtxwhep') > -1) {\n playerUrl = url;\n playerType = 'vtxwhep';\n }\n if (url.indexOf('webrtc') > -1) {\n playerUrl = url;\n playerType = 'webrtc';\n }\n if (url.indexOf('h264') > -1 || url.indexOf('cloudFile') > -1) {\n playerUrl = url;\n playerType = 'h264';\n }\n // rsl\n if (playerType === 'mp4' || playerType === 'iframe' || playerType === 'rsl') {\n return {\n type: playerType,\n url,\n };\n }\n return { url: initProtocol(playerUrl, enableAgent), type: playerType };\n};\n/**\n * 获取历史回放表格数据\n * @param data\n * @returns\n */\nexport const getUrlTableData = (data) => {\n const result = data.list.map((item, i) => {\n const beginTime = moment(item.beginTime);\n const endTime = moment(item.endTime);\n const totalSeconds = moment(endTime).diff(moment(beginTime), 'seconds');\n return {\n index: i + 1,\n deviceName: data.deviceName,\n deviceCode: data.deviceCode,\n devicePort: data.devicePort,\n deviceIp: data.deviceIp,\n streamType: data.streamType,\n channelName: data.channelName,\n beginTime: beginTime.format(TimeFormat.params),\n endTime: endTime.format(TimeFormat.params),\n size: bytesToMegaBytes(item.size),\n duration: secondsToString(totalSeconds),\n downloadUrl: '',\n url: item.playbackUrl || '',\n enableAgent: data.enableAgent || false,\n code: item.code,\n hkType: data.hkType,\n deviceId: data.deviceId,\n channelNum: data.channelNum,\n };\n });\n return result;\n};\n/**\n * bytes转换mb\n * @param bytes\n * @returns\n */\nexport const bytesToMegaBytes = (bytes) => `${(bytes / Math.pow(1024, 2)).toFixed(2)}MB`;\n/**\n * 秒数=>0时0分0秒\n * @param total\n * @returns\n */\nexport const secondsToString = (total) => {\n const hour = Math.floor(total / 3600);\n const minute = Math.floor((total % 3600) / 60);\n const second = Math.floor(total % 60);\n const result = `${hour > 0 ? hour + '小时' : ''}${minute > 0 ? minute + '分' : ''}${second > 0 ? second + '秒' : ''}`;\n return result;\n};\n/**\n * 秒数=>00:00:00\n * @param total\n * @returns\n */\nexport const secondsToTime = (total) => {\n const hour = Math.floor(total / 3600);\n const minute = Math.floor((total % 3600) / 60);\n const second = Math.floor(total % 60);\n const result = `${hour >= 10 ? hour : '0' + hour}:${minute >= 10 ? minute : '0' + minute}:${second >= 10 ? second : '0' + second}`;\n return result;\n};\n/**\n * 获取海康时间参数\n * @param time 时间\n * @returns\n */\nexport const getHKTimeString = (time) => {\n return moment(time).format(TimeFormat.default) + 'Z';\n};\n/**\n * 获取海康分段播放地址\n * @param totalUrl 总播放地址\n * @param startTime 开始时间\n * @param endTime 结束时间\n * @returns\n */\nexport const getHKListUrl = (totalUrl, startTime, endTime) => {\n const [url, query] = totalUrl.split('?');\n const urlParams = new URLSearchParams(query);\n urlParams.set('beginTime', getHKTimeString(startTime));\n urlParams.set('endTime', getHKTimeString(endTime));\n return `${url}?${urlParams.toString()}`;\n};\n/**\n *\n * 获取flv格式分段播放地址\n * @param totalUrl 总播放地址\n * @param startTime 开始时间\n * @param endTime 结束时间\n * @returns\n */\n// export const getFlvListUrl = (\n// totalUrl: string,\n// startTime: moment.MomentInput,\n// endTime: moment.MomentInput\n// ) => {\n// const [url, query] = totalUrl.split('?');\n// const urlParams = new URLSearchParams(query);\n// urlParams.set('beginTime', moment(startTime).format(TimeFormat.url));\n// urlParams.set('endTime', moment(endTime).format(TimeFormat.url));\n// return `${url}?${urlParams.toString()}`;\n// };\n/**\n * 获取地址栏中的参数信息\n * @param key 字段key\n * @param href 链接\n * @returns 字段值\n */\nexport const getUrlParam = (key, href = window.location.href) => {\n const paramObj = {};\n const matchList = href.match(/([^\\?&]+)=([^\\?&#]+)/g) || [];\n for (let i = 0, len = matchList.length; i < len; i++) {\n const r = matchList[i].match(/([^\\?&]+)=([^\\?&]+)/);\n paramObj[r[1]] = r[2];\n }\n if (key) {\n return paramObj[key];\n }\n else {\n return paramObj;\n }\n};\n/**\n *\n * @returns 返回UUID\n */\nexport function guid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\nexport function loadJs(path) {\n if (!path || path.length === 0) {\n throw new Error('argument \"path\" is required !');\n }\n const head = document.getElementsByTagName('head')[0];\n const script = document.createElement('script');\n script.src = path;\n script.type = 'text/javascript';\n head.appendChild(script);\n}\nexport function loadCss(path) {\n if (!path || path.length === 0) {\n throw new Error('argument \"path\" is required !');\n }\n const head = document.getElementsByTagName('head')[0];\n const link = document.createElement('link');\n link.href = path;\n link.rel = 'stylesheet';\n link.type = 'text/css';\n head.appendChild(link);\n}\n"],"mappings":"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"}
|