@vtx/player 1.3.1 → 1.3.2
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/lib/player/index.js
CHANGED
|
@@ -68,6 +68,8 @@ var Player = /*#__PURE__*/function () {
|
|
|
68
68
|
function Player(params) {
|
|
69
69
|
_classCallCheck(this, Player);
|
|
70
70
|
|
|
71
|
+
var _a;
|
|
72
|
+
|
|
71
73
|
this.player = null;
|
|
72
74
|
/** 之前的视频播放速度,用于处理海康音量控制 */
|
|
73
75
|
|
|
@@ -167,6 +169,8 @@ var Player = /*#__PURE__*/function () {
|
|
|
167
169
|
}
|
|
168
170
|
|
|
169
171
|
if (this.type === 'webrtc') {
|
|
172
|
+
var dd = document.getElementById(container.id);
|
|
173
|
+
((_a = dd.children) === null || _a === void 0 ? void 0 : _a.length) > 0 && dd.removeChild(dd.firstChild);
|
|
170
174
|
video.autoplay = true;
|
|
171
175
|
var id = "".concat(container.id, "_").concat(Date.now());
|
|
172
176
|
video.id = id;
|
|
@@ -223,8 +227,7 @@ var Player = /*#__PURE__*/function () {
|
|
|
223
227
|
if (this.type === 'webrtc') {
|
|
224
228
|
var _player2 = this.player;
|
|
225
229
|
|
|
226
|
-
_player2.play();
|
|
227
|
-
|
|
230
|
+
_player2.play();
|
|
228
231
|
}
|
|
229
232
|
|
|
230
233
|
return Promise.resolve();
|
|
@@ -294,6 +297,12 @@ var Player = /*#__PURE__*/function () {
|
|
|
294
297
|
|
|
295
298
|
_player6.JS_DestroyWorker();
|
|
296
299
|
}
|
|
300
|
+
|
|
301
|
+
if (this.type === 'webrtc') {
|
|
302
|
+
var _player7 = this.player;
|
|
303
|
+
|
|
304
|
+
_player7.close();
|
|
305
|
+
}
|
|
297
306
|
}
|
|
298
307
|
/** 截图 */
|
|
299
308
|
|
|
@@ -324,9 +333,9 @@ var Player = /*#__PURE__*/function () {
|
|
|
324
333
|
var player = this.player;
|
|
325
334
|
player.JS_Resize();
|
|
326
335
|
} else if (this.type === 'icc_ws') {
|
|
327
|
-
var
|
|
336
|
+
var _player8 = this.player;
|
|
328
337
|
|
|
329
|
-
|
|
338
|
+
_player8.setPlayerAdapter('selfAdaption');
|
|
330
339
|
}
|
|
331
340
|
}
|
|
332
341
|
/**
|
|
@@ -347,9 +356,9 @@ var Player = /*#__PURE__*/function () {
|
|
|
347
356
|
}
|
|
348
357
|
|
|
349
358
|
if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {
|
|
350
|
-
var
|
|
359
|
+
var _player9 = this.player;
|
|
351
360
|
|
|
352
|
-
|
|
361
|
+
_player9.JS_SetVolume(1, value);
|
|
353
362
|
}
|
|
354
363
|
}
|
|
355
364
|
/**
|
|
@@ -421,9 +430,9 @@ var Player = /*#__PURE__*/function () {
|
|
|
421
430
|
|
|
422
431
|
this.preSpeed = speed;
|
|
423
432
|
} else if (this.type === 'icc_ws') {
|
|
424
|
-
var
|
|
433
|
+
var _player10 = this.player;
|
|
425
434
|
|
|
426
|
-
|
|
435
|
+
_player10.playSpeed(speed);
|
|
427
436
|
} else {
|
|
428
437
|
this.video.playbackRate = speed;
|
|
429
438
|
}
|
|
@@ -465,7 +474,7 @@ var Player = /*#__PURE__*/function () {
|
|
|
465
474
|
var _a, _b;
|
|
466
475
|
|
|
467
476
|
return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
468
|
-
var player, seekTime,
|
|
477
|
+
var player, seekTime, _player11, _seekTime;
|
|
469
478
|
|
|
470
479
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
471
480
|
while (1) {
|
|
@@ -492,10 +501,10 @@ var Player = /*#__PURE__*/function () {
|
|
|
492
501
|
break;
|
|
493
502
|
}
|
|
494
503
|
|
|
495
|
-
|
|
504
|
+
_player11 = this.player;
|
|
496
505
|
_seekTime = (_b = (0, _moment["default"])(this.startTime)) === null || _b === void 0 ? void 0 : _b.add(time, 'seconds').format('HH:mm:ss');
|
|
497
506
|
|
|
498
|
-
|
|
507
|
+
_player11.jumpPlayByTime(_seekTime);
|
|
499
508
|
|
|
500
509
|
_context.next = 16;
|
|
501
510
|
break;
|
package/lib/player/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","Player","params","player","preSpeed","url","channelNum","deviceCode","enableAgent","container","live","type","startTime","endTime","streamType","deviceIp","devicePort","playerParams","getPlayerParams","video","document","createElement","className","muted","FlvJs","isSupported","appendChild","createPlayer","isLive","attachMediaElement","load","Hls","loadSource","attachMedia","window","JSPlugin","szId","id","szBasePath","iMaxSplit","iCurrentSplit","wrapDiv","getElementById","getElementsByTagName","startsWith","JSPluginHkCar","iWidth","clientWidth","iHeight","clientHeight","oStyle","border","borderSelect","background","PlayerManager","ip","location","protocol","el","maxNum","num","autoplay","Date","now","WebrtcPlayerManager","play","JS_Play","playURL","mode","timer","setTimeout","playRealVideo","channelList","isOnline","Number","clearTimeout","getHKTimeString","playRecordVideo","moment","format","recordSource","destroy","remove","JS_Stop","JS_DestroyWorker","captureName","callback","time","name","JS_CapturePicture","res","Capture","JS_Resize","setPlayerAdapter","volume","JS_SetVolume","speed","JS_Slow","JS_Fast","playSpeed","playbackRate","_a","addEventListener","currentTime","seekTime","diff","JS_SetWindowControlCallback","call","StreamEnd","_b","add","JS_Seek","jumpPlayByTime","JS_Pause","pause","JS_Resume","JS_StartTalk","JS_StopTalk","canvas","width","videoWidth","height","videoHeight","context","getContext","drawImage","dataURL","toBlob","blob","URL","createObjectURL"],"sources":["player/index.js"],"sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport PlayerManager from '../icc/PlayerManager';\nimport { getHKTimeString, getPlayerParams } from '../utils';\nimport WebrtcPlayerManager from '../webrtc/PlayerManager';\nimport FlvJs from 'flv.js';\nimport Hls from 'hls.js';\nimport moment from 'moment';\n/**\n * 视频播放核心类\n */\nclass Player {\n constructor(params) {\n this.player = null;\n /** 之前的视频播放速度,用于处理海康音量控制 */\n this.preSpeed = 1;\n /** 视频播放流是否走代理 - 是强制走代理,否通过判断 http协议,走代理配置 */\n const { url, channelNum, deviceCode, enableAgent = false, container, live = true, type, startTime, endTime, streamType, deviceIp, devicePort, } = params;\n const playerParams = getPlayerParams(type, url, enableAgent, live);\n this.type = type || playerParams.type; // 如果不传递type,则通过url解析type值,1.1.2之后默认都传type\n this.url = playerParams.url;\n this.channelNum = channelNum;\n this.deviceCode = deviceCode || '';\n this.streamType = streamType || '0'; // 默认主码流\n this.enableAgent = enableAgent;\n this.startTime = startTime;\n this.endTime = endTime;\n const video = document.createElement('video'); // 生成video元素\n video.className = 'vtx-player-video';\n video.muted = true; //设置静音\n this.video = video;\n if (this.type === 'flv' && FlvJs.isSupported() && video) {\n container.appendChild(video);\n this.player = FlvJs.createPlayer({\n type: 'flv',\n isLive: live,\n url: this.url,\n });\n this.player.attachMediaElement(this.video);\n this.player.load();\n }\n // 处理hls格式视频\n if (this.type === 'hls' && Hls.isSupported() && video) {\n container.appendChild(video);\n this.player = new Hls();\n this.player.loadSource(this.url);\n this.player.attachMedia(this.video);\n }\n // 处理海康视频\n if (this.type === 'hk_ws') {\n this.player = new window.JSPlugin({\n szId: container.id,\n szBasePath: './resources/',\n iMaxSplit: 1,\n iCurrentSplit: 1,\n });\n const wrapDiv = document.getElementById(container.id);\n this.video = wrapDiv.getElementsByTagName('video')[0];\n }\n // 处理海康视频\n if (this.type === 'hkcar_ws' && (url.startsWith('ws://') || url.startsWith('wss://'))) {\n const wrapDiv = document.getElementById(container.id);\n this.player = new window.JSPluginHkCar({\n szId: container.id,\n iWidth: wrapDiv.clientWidth,\n iHeight: wrapDiv.clientHeight,\n iMaxSplit: 1,\n iCurrentSplit: 1,\n szBasePath: './resources/hkcar/',\n oStyle: {\n border: 'transparent',\n borderSelect: 'transparent',\n background: '#2b3d51',\n },\n });\n }\n if (this.type === 'icc_ws') {\n this.player = new PlayerManager({\n ip: window.location.protocol === 'http:' ? deviceIp : `${deviceIp || ''}:${devicePort || ''}`,\n el: container.id,\n type: live ? 'real' : 'record',\n maxNum: 1,\n num: 1,\n });\n }\n if (this.type === 'webrtc') {\n video.autoplay = true;\n const id = `${container.id}_${Date.now()}`;\n video.id = id;\n container.appendChild(video);\n this.player = new WebrtcPlayerManager({\n el: id,\n url: this.url,\n type: live,\n });\n }\n }\n /** 播放 */\n play() {\n if (this.type === 'flv') {\n const player = this.player;\n return player.play();\n }\n if (this.type === 'hls') {\n return this.video.play();\n }\n if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {\n const player = this.player;\n const result = player.JS_Play(this.url, { playURL: this.url, mode: 0 }, 0);\n return result;\n }\n if (this.type === 'icc_ws') {\n const timer = setTimeout(() => {\n const player = this.player;\n player.playRealVideo({\n channelList: [\n {\n id: this.deviceCode + '$1$0$' + this.channelNum,\n isOnline: true,\n },\n ],\n streamType: Number(this.streamType) + 1,\n });\n clearTimeout(timer);\n }, 100);\n }\n if (this.type === 'webrtc') {\n const player = this.player;\n player.play();\n // document.getElementById('media_player')?.[0].prop('srcObject', 'livestream');/\\\n }\n return Promise.resolve();\n }\n /** 回放 */\n playBack() {\n if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {\n const player = this.player;\n const result = player.JS_Play(this.url, { playURL: this.url, mode: 0 }, 1, getHKTimeString(this.startTime), getHKTimeString(this.endTime));\n return result;\n }\n else if (this.type === 'icc_ws') {\n const player = this.player;\n return new Promise((resolve) => {\n player.playRecordVideo({\n channelList: [\n {\n id: this.deviceCode + '$1$0$' + this.channelNum,\n },\n ],\n startTime: moment(this.startTime, 'YYYY-MM-DD HH:mm:ss').format('X'),\n endTime: moment(this.endTime, 'YYYY-MM-DD HH:mm:ss').format('X'),\n recordSource: '2',\n streamType: this.streamType,\n });\n resolve(true);\n });\n }\n else {\n return this.play();\n }\n }\n /** 销毁 */\n destroy() {\n if (this.type === 'flv') {\n const player = this.player;\n player.destroy();\n this.player = null;\n this.video.remove();\n }\n if (this.type === 'hls') {\n const player = this.player;\n player.destroy();\n this.player = null;\n this.video.remove();\n }\n if (this.type === 'hk_ws') {\n const player = this.player;\n player.JS_Stop(1);\n }\n if (this.type === 'hkcar_ws') {\n const player = this.player;\n player.JS_DestroyWorker();\n }\n }\n /** 截图 */\n capture(captureName = '视频截图', callback = null, time = true) {\n let name = captureName;\n if (time)\n name += `-${moment().format('YYYYMMDDHHmmss')}`;\n if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {\n const player = this.player;\n if (player)\n player.JS_CapturePicture(1, name, 'JPEG', (res) => {\n callback && callback(res);\n });\n }\n else {\n Capture(this.video, name, callback);\n }\n }\n /** 尺寸重置 */\n resize() {\n if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {\n const player = this.player;\n player.JS_Resize();\n }\n else if (this.type === 'icc_ws') {\n const player = this.player;\n player.setPlayerAdapter('selfAdaption');\n }\n }\n /**\n * 设置音量\n * @param value\n */\n setVolume(value) {\n if (this.type === 'flv') {\n const player = this.player;\n player.volume = value / 100;\n }\n if (this.type === 'hls') {\n this.video.volume = value / 100;\n }\n if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {\n const player = this.player;\n player.JS_SetVolume(1, value);\n }\n }\n /**\n * 设置播放速度\n * @param speed\n */\n setSpeed(speed) {\n if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {\n const player = this.player;\n if (this.preSpeed / speed === 2) {\n player.JS_Slow(1);\n }\n if (this.preSpeed / speed === 4) {\n player.JS_Slow(1).then(() => player.JS_Slow(1));\n }\n if (this.preSpeed / speed === 8) {\n player\n .JS_Slow(1)\n .then(() => player.JS_Slow(1))\n .then(() => player.JS_Slow(1));\n }\n if (this.preSpeed / speed === 16) {\n player\n .JS_Slow(1)\n .then(() => player.JS_Slow(1))\n .then(() => player.JS_Slow(1))\n .then(() => player.JS_Slow(1));\n }\n if (speed / this.preSpeed === 2) {\n player.JS_Fast(1);\n }\n if (speed / this.preSpeed === 4) {\n player.JS_Fast(1).then(() => player.JS_Fast(1));\n }\n if (speed / this.preSpeed === 8) {\n player\n .JS_Fast(1)\n .then(() => player.JS_Fast(1))\n .then(() => player.JS_Fast(1));\n }\n if (speed / this.preSpeed === 16) {\n player\n .JS_Fast(1)\n .then(() => player.JS_Fast(1))\n .then(() => player.JS_Fast(1))\n .then(() => player.JS_Fast(1));\n }\n this.preSpeed = speed;\n }\n else if (this.type === 'icc_ws') {\n const player = this.player;\n player.playSpeed(speed);\n }\n else {\n this.video.playbackRate = speed;\n }\n }\n /**\n * 时间更新事件\n * @param callback 回调函数\n */\n onTimeUpdate(callback) {\n var _a;\n this.video.addEventListener('timeupdate', () => {\n let currentTime = this.video.currentTime;\n if ((this.type === 'hk_ws' || this.type === 'hkcar_ws') && this.seekTime) {\n currentTime = currentTime + this.seekTime.diff(this.startTime, 'seconds');\n }\n callback(currentTime, this.type === 'hk_ws' || this.type === 'hkcar_ws'\n ? this.preSpeed\n : this.video.playbackRate);\n });\n // 增加hw_ws 流播放结束回调\n const player = this.player;\n (_a = player === null || player === void 0 ? void 0 : player.JS_SetWindowControlCallback) === null || _a === void 0 ? void 0 : _a.call(player, {\n StreamEnd: () => {\n callback(moment(this.endTime).diff(this.startTime, 'seconds'), this.preSpeed);\n },\n });\n }\n /** 跳转到 */\n seekTo(time) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {\n const player = this.player;\n const seekTime = (_a = moment(this.startTime)) === null || _a === void 0 ? void 0 : _a.add(time, 'seconds');\n yield player.JS_Seek(1, getHKTimeString(seekTime), getHKTimeString(this.endTime));\n this.seekTime = seekTime;\n }\n else if (this.type === 'icc_ws') {\n const player = this.player;\n const seekTime = (_b = moment(this.startTime)) === null || _b === void 0 ? void 0 : _b.add(time, 'seconds').format('HH:mm:ss');\n player.jumpPlayByTime(seekTime);\n }\n else {\n this.video.currentTime = time;\n return Promise.resolve();\n }\n });\n }\n /**\n * 暂停播放\n * @param callback 回调函数\n */\n pause(callback) {\n if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {\n const player = this.player;\n player.JS_Pause(1).then(() => callback && callback());\n }\n else {\n this.video.pause();\n callback && callback();\n }\n }\n /**\n * 恢复播放\n * @param callback 回调函数\n */\n resume(callback) {\n if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {\n const player = this.player;\n player.JS_Resume(1).then(() => callback && callback());\n }\n else {\n this.video.play();\n callback && callback();\n }\n }\n /**\n * 开始对讲\n * @param url 对讲地址\n */\n startTalk(url) {\n if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {\n const player = this.player;\n return player.JS_StartTalk(url);\n }\n return Promise.reject();\n }\n /**\n * 开始对讲\n * @param state 状态\n */\n stopTalk() {\n if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {\n const player = this.player;\n return player.JS_StopTalk();\n }\n return Promise.reject();\n }\n}\n/**\n * 截图\n * @param video\n */\nconst Capture = (video, name, callback) => {\n const canvas = document.createElement('canvas');\n canvas.width = video.videoWidth;\n canvas.height = video.videoHeight;\n const context = canvas.getContext('2d');\n if (context) {\n context.drawImage(video, 0, 0, canvas.width, canvas.height);\n let dataURL;\n canvas.toBlob((blob) => {\n if (blob) {\n dataURL = URL.createObjectURL(blob);\n // const link = document.createElement('a');\n callback && callback(dataURL);\n // link.href = dataURL;\n // link.download = `${name}.png`;\n // link.style.display = 'none';\n // document.body.appendChild(link);\n // link.click();\n // document.body.removeChild(link);\n // URL.revokeObjectURL(dataURL);\n }\n });\n }\n};\nexport default Player;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","Player","params","_a","player","preSpeed","url","channelNum","deviceCode","enableAgent","container","live","type","startTime","endTime","streamType","deviceIp","devicePort","playerParams","getPlayerParams","video","document","createElement","className","muted","FlvJs","isSupported","appendChild","createPlayer","isLive","attachMediaElement","load","Hls","loadSource","attachMedia","window","JSPlugin","szId","id","szBasePath","iMaxSplit","iCurrentSplit","wrapDiv","getElementById","getElementsByTagName","startsWith","JSPluginHkCar","iWidth","clientWidth","iHeight","clientHeight","oStyle","border","borderSelect","background","PlayerManager","ip","location","protocol","el","maxNum","num","dd","children","length","removeChild","firstChild","autoplay","Date","now","WebrtcPlayerManager","play","JS_Play","playURL","mode","timer","setTimeout","playRealVideo","channelList","isOnline","Number","clearTimeout","getHKTimeString","playRecordVideo","moment","format","recordSource","destroy","remove","JS_Stop","JS_DestroyWorker","close","captureName","callback","time","name","JS_CapturePicture","res","Capture","JS_Resize","setPlayerAdapter","volume","JS_SetVolume","speed","JS_Slow","JS_Fast","playSpeed","playbackRate","addEventListener","currentTime","seekTime","diff","JS_SetWindowControlCallback","call","StreamEnd","_b","add","JS_Seek","jumpPlayByTime","JS_Pause","pause","JS_Resume","JS_StartTalk","JS_StopTalk","canvas","width","videoWidth","height","videoHeight","context","getContext","drawImage","dataURL","toBlob","blob","URL","createObjectURL"],"sources":["player/index.js"],"sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport PlayerManager from '../icc/PlayerManager';\nimport { getHKTimeString, getPlayerParams } from '../utils';\nimport WebrtcPlayerManager from '../webrtc/PlayerManager';\nimport FlvJs from 'flv.js';\nimport Hls from 'hls.js';\nimport moment from 'moment';\n/**\n * 视频播放核心类\n */\nclass Player {\n constructor(params) {\n var _a;\n this.player = null;\n /** 之前的视频播放速度,用于处理海康音量控制 */\n this.preSpeed = 1;\n /** 视频播放流是否走代理 - 是强制走代理,否通过判断 http协议,走代理配置 */\n const { url, channelNum, deviceCode, enableAgent = false, container, live = true, type, startTime, endTime, streamType, deviceIp, devicePort, } = params;\n const playerParams = getPlayerParams(type, url, enableAgent, live);\n this.type = type || playerParams.type; // 如果不传递type,则通过url解析type值,1.1.2之后默认都传type\n this.url = playerParams.url;\n this.channelNum = channelNum;\n this.deviceCode = deviceCode || '';\n this.streamType = streamType || '0'; // 默认主码流\n this.enableAgent = enableAgent;\n this.startTime = startTime;\n this.endTime = endTime;\n const video = document.createElement('video'); // 生成video元素\n video.className = 'vtx-player-video';\n video.muted = true; //设置静音\n this.video = video;\n if (this.type === 'flv' && FlvJs.isSupported() && video) {\n container.appendChild(video);\n this.player = FlvJs.createPlayer({\n type: 'flv',\n isLive: live,\n url: this.url,\n });\n this.player.attachMediaElement(this.video);\n this.player.load();\n }\n // 处理hls格式视频\n if (this.type === 'hls' && Hls.isSupported() && video) {\n container.appendChild(video);\n this.player = new Hls();\n this.player.loadSource(this.url);\n this.player.attachMedia(this.video);\n }\n // 处理海康视频\n if (this.type === 'hk_ws') {\n this.player = new window.JSPlugin({\n szId: container.id,\n szBasePath: './resources/',\n iMaxSplit: 1,\n iCurrentSplit: 1,\n });\n const wrapDiv = document.getElementById(container.id);\n this.video = wrapDiv.getElementsByTagName('video')[0];\n }\n // 处理海康视频\n if (this.type === 'hkcar_ws' && (url.startsWith('ws://') || url.startsWith('wss://'))) {\n const wrapDiv = document.getElementById(container.id);\n this.player = new window.JSPluginHkCar({\n szId: container.id,\n iWidth: wrapDiv.clientWidth,\n iHeight: wrapDiv.clientHeight,\n iMaxSplit: 1,\n iCurrentSplit: 1,\n szBasePath: './resources/hkcar/',\n oStyle: {\n border: 'transparent',\n borderSelect: 'transparent',\n background: '#2b3d51',\n },\n });\n }\n if (this.type === 'icc_ws') {\n this.player = new PlayerManager({\n ip: window.location.protocol === 'http:' ? deviceIp : `${deviceIp || ''}:${devicePort || ''}`,\n el: container.id,\n type: live ? 'real' : 'record',\n maxNum: 1,\n num: 1,\n });\n }\n if (this.type === 'webrtc') {\n const dd = document.getElementById(container.id);\n ((_a = dd.children) === null || _a === void 0 ? void 0 : _a.length) > 0 && dd.removeChild(dd.firstChild);\n video.autoplay = true;\n const id = `${container.id}_${Date.now()}`;\n video.id = id;\n container.appendChild(video);\n this.player = new WebrtcPlayerManager({\n el: id,\n url: this.url,\n type: live,\n });\n }\n }\n /** 播放 */\n play() {\n if (this.type === 'flv') {\n const player = this.player;\n return player.play();\n }\n if (this.type === 'hls') {\n return this.video.play();\n }\n if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {\n const player = this.player;\n const result = player.JS_Play(this.url, { playURL: this.url, mode: 0 }, 0);\n return result;\n }\n if (this.type === 'icc_ws') {\n const timer = setTimeout(() => {\n const player = this.player;\n player.playRealVideo({\n channelList: [\n {\n id: this.deviceCode + '$1$0$' + this.channelNum,\n isOnline: true,\n },\n ],\n streamType: Number(this.streamType) + 1,\n });\n clearTimeout(timer);\n }, 100);\n }\n if (this.type === 'webrtc') {\n const player = this.player;\n player.play();\n }\n return Promise.resolve();\n }\n /** 回放 */\n playBack() {\n if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {\n const player = this.player;\n const result = player.JS_Play(this.url, { playURL: this.url, mode: 0 }, 1, getHKTimeString(this.startTime), getHKTimeString(this.endTime));\n return result;\n }\n else if (this.type === 'icc_ws') {\n const player = this.player;\n return new Promise((resolve) => {\n player.playRecordVideo({\n channelList: [\n {\n id: this.deviceCode + '$1$0$' + this.channelNum,\n },\n ],\n startTime: moment(this.startTime, 'YYYY-MM-DD HH:mm:ss').format('X'),\n endTime: moment(this.endTime, 'YYYY-MM-DD HH:mm:ss').format('X'),\n recordSource: '2',\n streamType: this.streamType,\n });\n resolve(true);\n });\n }\n else {\n return this.play();\n }\n }\n /** 销毁 */\n destroy() {\n if (this.type === 'flv') {\n const player = this.player;\n player.destroy();\n this.player = null;\n this.video.remove();\n }\n if (this.type === 'hls') {\n const player = this.player;\n player.destroy();\n this.player = null;\n this.video.remove();\n }\n if (this.type === 'hk_ws') {\n const player = this.player;\n player.JS_Stop(1);\n }\n if (this.type === 'hkcar_ws') {\n const player = this.player;\n player.JS_DestroyWorker();\n }\n if (this.type === 'webrtc') {\n const player = this.player;\n player.close();\n }\n }\n /** 截图 */\n capture(captureName = '视频截图', callback = null, time = true) {\n let name = captureName;\n if (time)\n name += `-${moment().format('YYYYMMDDHHmmss')}`;\n if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {\n const player = this.player;\n if (player)\n player.JS_CapturePicture(1, name, 'JPEG', (res) => {\n callback && callback(res);\n });\n }\n else {\n Capture(this.video, name, callback);\n }\n }\n /** 尺寸重置 */\n resize() {\n if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {\n const player = this.player;\n player.JS_Resize();\n }\n else if (this.type === 'icc_ws') {\n const player = this.player;\n player.setPlayerAdapter('selfAdaption');\n }\n }\n /**\n * 设置音量\n * @param value\n */\n setVolume(value) {\n if (this.type === 'flv') {\n const player = this.player;\n player.volume = value / 100;\n }\n if (this.type === 'hls') {\n this.video.volume = value / 100;\n }\n if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {\n const player = this.player;\n player.JS_SetVolume(1, value);\n }\n }\n /**\n * 设置播放速度\n * @param speed\n */\n setSpeed(speed) {\n if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {\n const player = this.player;\n if (this.preSpeed / speed === 2) {\n player.JS_Slow(1);\n }\n if (this.preSpeed / speed === 4) {\n player.JS_Slow(1).then(() => player.JS_Slow(1));\n }\n if (this.preSpeed / speed === 8) {\n player\n .JS_Slow(1)\n .then(() => player.JS_Slow(1))\n .then(() => player.JS_Slow(1));\n }\n if (this.preSpeed / speed === 16) {\n player\n .JS_Slow(1)\n .then(() => player.JS_Slow(1))\n .then(() => player.JS_Slow(1))\n .then(() => player.JS_Slow(1));\n }\n if (speed / this.preSpeed === 2) {\n player.JS_Fast(1);\n }\n if (speed / this.preSpeed === 4) {\n player.JS_Fast(1).then(() => player.JS_Fast(1));\n }\n if (speed / this.preSpeed === 8) {\n player\n .JS_Fast(1)\n .then(() => player.JS_Fast(1))\n .then(() => player.JS_Fast(1));\n }\n if (speed / this.preSpeed === 16) {\n player\n .JS_Fast(1)\n .then(() => player.JS_Fast(1))\n .then(() => player.JS_Fast(1))\n .then(() => player.JS_Fast(1));\n }\n this.preSpeed = speed;\n }\n else if (this.type === 'icc_ws') {\n const player = this.player;\n player.playSpeed(speed);\n }\n else {\n this.video.playbackRate = speed;\n }\n }\n /**\n * 时间更新事件\n * @param callback 回调函数\n */\n onTimeUpdate(callback) {\n var _a;\n this.video.addEventListener('timeupdate', () => {\n let currentTime = this.video.currentTime;\n if ((this.type === 'hk_ws' || this.type === 'hkcar_ws') && this.seekTime) {\n currentTime = currentTime + this.seekTime.diff(this.startTime, 'seconds');\n }\n callback(currentTime, this.type === 'hk_ws' || this.type === 'hkcar_ws'\n ? this.preSpeed\n : this.video.playbackRate);\n });\n // 增加hw_ws 流播放结束回调\n const player = this.player;\n (_a = player === null || player === void 0 ? void 0 : player.JS_SetWindowControlCallback) === null || _a === void 0 ? void 0 : _a.call(player, {\n StreamEnd: () => {\n callback(moment(this.endTime).diff(this.startTime, 'seconds'), this.preSpeed);\n },\n });\n }\n /** 跳转到 */\n seekTo(time) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {\n const player = this.player;\n const seekTime = (_a = moment(this.startTime)) === null || _a === void 0 ? void 0 : _a.add(time, 'seconds');\n yield player.JS_Seek(1, getHKTimeString(seekTime), getHKTimeString(this.endTime));\n this.seekTime = seekTime;\n }\n else if (this.type === 'icc_ws') {\n const player = this.player;\n const seekTime = (_b = moment(this.startTime)) === null || _b === void 0 ? void 0 : _b.add(time, 'seconds').format('HH:mm:ss');\n player.jumpPlayByTime(seekTime);\n }\n else {\n this.video.currentTime = time;\n return Promise.resolve();\n }\n });\n }\n /**\n * 暂停播放\n * @param callback 回调函数\n */\n pause(callback) {\n if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {\n const player = this.player;\n player.JS_Pause(1).then(() => callback && callback());\n }\n else {\n this.video.pause();\n callback && callback();\n }\n }\n /**\n * 恢复播放\n * @param callback 回调函数\n */\n resume(callback) {\n if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {\n const player = this.player;\n player.JS_Resume(1).then(() => callback && callback());\n }\n else {\n this.video.play();\n callback && callback();\n }\n }\n /**\n * 开始对讲\n * @param url 对讲地址\n */\n startTalk(url) {\n if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {\n const player = this.player;\n return player.JS_StartTalk(url);\n }\n return Promise.reject();\n }\n /**\n * 开始对讲\n * @param state 状态\n */\n stopTalk() {\n if (this.type === 'hk_ws' || this.type === 'hkcar_ws') {\n const player = this.player;\n return player.JS_StopTalk();\n }\n return Promise.reject();\n }\n}\n/**\n * 截图\n * @param video\n */\nconst Capture = (video, name, callback) => {\n const canvas = document.createElement('canvas');\n canvas.width = video.videoWidth;\n canvas.height = video.videoHeight;\n const context = canvas.getContext('2d');\n if (context) {\n context.drawImage(video, 0, 0, canvas.width, canvas.height);\n let dataURL;\n canvas.toBlob((blob) => {\n if (blob) {\n dataURL = URL.createObjectURL(blob);\n // const link = document.createElement('a');\n callback && callback(dataURL);\n // link.href = dataURL;\n // link.download = `${name}.png`;\n // link.style.display = 'none';\n // document.body.appendChild(link);\n // link.click();\n // document.body.removeChild(link);\n // URL.revokeObjectURL(dataURL);\n }\n });\n }\n};\nexport default Player;\n"],"mappings":"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"}
|
|
@@ -106,8 +106,8 @@ var WebrtcPlayerManager = /*#__PURE__*/function () {
|
|
|
106
106
|
|
|
107
107
|
}, {
|
|
108
108
|
key: "close",
|
|
109
|
-
value: function close(
|
|
110
|
-
this.player && this.player.close(
|
|
109
|
+
value: function close() {
|
|
110
|
+
this.player && this.player.close();
|
|
111
111
|
}
|
|
112
112
|
/**
|
|
113
113
|
* 设置全屏
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlayerManager.js","names":["SrsRtcPlayerConstructor","SrsRtcPlayerAsync","WebrtcPlayerManager","opt","el","realPlayer","recordPlayer","player","url","type","playNum","playIndex","currentChannelId","recordList","init","initPlayer","num","$","prop","stream","play","reason","close","console","error","pause","speed","playSpeed","
|
|
1
|
+
{"version":3,"file":"PlayerManager.js","names":["SrsRtcPlayerConstructor","SrsRtcPlayerAsync","WebrtcPlayerManager","opt","el","realPlayer","recordPlayer","player","url","type","playNum","playIndex","currentChannelId","recordList","init","initPlayer","num","$","prop","stream","play","reason","close","console","error","pause","speed","playSpeed","playerAdapter","number","index","time"],"sources":["webrtc/PlayerManager.js"],"sourcesContent":["let SrsRtcPlayerConstructor = SrsRtcPlayerAsync;\n/**\n * WSPlayer是核心组件\n * API 封装了接口\n */\nclass WebrtcPlayerManager {\n constructor(opt) {\n // 播放器所在的容器ID\n this.el = opt.el;\n // 实时预览播放器\n this.realPlayer = null;\n // 录像回放播放器\n this.recordPlayer = null;\n this.player = null;\n this.url = opt.url;\n // 实时预览还是录像回放播放器\n this.type = opt.type;\n // 窗口的数量\n this.playNum = 1;\n // 当前选中的窗口的索引\n this.playIndex = 0;\n // 当前选中窗口正在播放视频的通道\n this.currentChannelId = '';\n // 索引对应窗口,保存当日录像信息\n this.recordList = [];\n this.init(opt);\n }\n init(opt) {\n this.initPlayer(opt);\n }\n /**\n * 初始化实时预览播放器\n */\n initPlayer(opt) {\n this.playNum = opt.num;\n this.realPlayer = new SrsRtcPlayerConstructor();\n if (this.type) {\n $(`#${this.el}`).prop('srcObject', this.realPlayer.stream);\n }\n else {\n $(`#${this.el}`).prop('src', this.realPlayer.stream);\n }\n this.realPlayer.play(this.url).catch(function (reason) {\n this.realPlayer.close();\n console.error(reason);\n });\n this.player = this.realPlayer;\n }\n /**\n * 录像暂停\n * 只有正在播放的录像调用才有效\n */\n pause() {\n this.recordPlayer && this.recordPlayer.pause();\n }\n /**\n * 录像暂停后播放\n * 只有暂停后的录像调用才有效\n */\n play() {\n this.realPlayer && this.realPlayer.play(this.url);\n }\n /**\n * 倍速播放\n * @param {number} speed 速率 0.125 0.25 0.5 1 2 4 8 共7种速率\n */\n playSpeed(speed) {\n this.recordPlayer && this.recordPlayer.playSpeed(speed);\n }\n /**\n * 关闭播放器\n * @param {number} index 可选,关闭指定索引的窗口的播放器,不传则表示关闭所有播放器\n */\n close() {\n this.player && this.player.close();\n }\n /**\n * 设置全屏\n */\n setFullScreen() {\n // this.player.setFullScreen();\n }\n /**\n * 设置窗口自适应还是拉伸\n * @param {string} playerAdapter selfAdaption 自适应 | stretching 拉伸\n */\n setPlayerAdapter(playerAdapter) {\n // this.player.setPlayerAdapter(playerAdapter);\n }\n /**\n * 控制视频播放器显示的路数: 1 4 9 16 25,不会超过最大显示路数\n * @param {number} number\n */\n setPlayerNum(number) {\n // this.player.setPlayerNum(number);\n }\n /**\n * 设置选中的播放器的索引\n * @param {number} index\n */\n setSelectIndex(index) {\n // this.player.setSelectIndex(index);\n }\n /**\n * 录像跳转播放\n * @param {string} time HH:mm:ss格式\n */\n jumpPlayByTime(time) {\n // this.player.jumpPlayByTime(time);\n }\n}\nexport default WebrtcPlayerManager;\n"],"mappings":";;;;;;;;;;;;;AAAA,IAAIA,uBAAuB,GAAGC,iBAA9B;AACA;AACA;AACA;AACA;;IACMC,mB;EACF,6BAAYC,GAAZ,EAAiB;IAAA;;IACb;IACA,KAAKC,EAAL,GAAUD,GAAG,CAACC,EAAd,CAFa,CAGb;;IACA,KAAKC,UAAL,GAAkB,IAAlB,CAJa,CAKb;;IACA,KAAKC,YAAL,GAAoB,IAApB;IACA,KAAKC,MAAL,GAAc,IAAd;IACA,KAAKC,GAAL,GAAWL,GAAG,CAACK,GAAf,CARa,CASb;;IACA,KAAKC,IAAL,GAAYN,GAAG,CAACM,IAAhB,CAVa,CAWb;;IACA,KAAKC,OAAL,GAAe,CAAf,CAZa,CAab;;IACA,KAAKC,SAAL,GAAiB,CAAjB,CAda,CAeb;;IACA,KAAKC,gBAAL,GAAwB,EAAxB,CAhBa,CAiBb;;IACA,KAAKC,UAAL,GAAkB,EAAlB;IACA,KAAKC,IAAL,CAAUX,GAAV;EACH;;;;WACD,cAAKA,GAAL,EAAU;MACN,KAAKY,UAAL,CAAgBZ,GAAhB;IACH;IACD;AACJ;AACA;;;;WACI,oBAAWA,GAAX,EAAgB;MACZ,KAAKO,OAAL,GAAeP,GAAG,CAACa,GAAnB;MACA,KAAKX,UAAL,GAAkB,IAAIL,uBAAJ,EAAlB;;MACA,IAAI,KAAKS,IAAT,EAAe;QACXQ,CAAC,YAAK,KAAKb,EAAV,EAAD,CAAiBc,IAAjB,CAAsB,WAAtB,EAAmC,KAAKb,UAAL,CAAgBc,MAAnD;MACH,CAFD,MAGK;QACDF,CAAC,YAAK,KAAKb,EAAV,EAAD,CAAiBc,IAAjB,CAAsB,KAAtB,EAA6B,KAAKb,UAAL,CAAgBc,MAA7C;MACH;;MACD,KAAKd,UAAL,CAAgBe,IAAhB,CAAqB,KAAKZ,GAA1B,WAAqC,UAAUa,MAAV,EAAkB;QACnD,KAAKhB,UAAL,CAAgBiB,KAAhB;QACAC,OAAO,CAACC,KAAR,CAAcH,MAAd;MACH,CAHD;MAIA,KAAKd,MAAL,GAAc,KAAKF,UAAnB;IACH;IACD;AACJ;AACA;AACA;;;;WACI,iBAAQ;MACJ,KAAKC,YAAL,IAAqB,KAAKA,YAAL,CAAkBmB,KAAlB,EAArB;IACH;IACD;AACJ;AACA;AACA;;;;WACI,gBAAO;MACH,KAAKpB,UAAL,IAAmB,KAAKA,UAAL,CAAgBe,IAAhB,CAAqB,KAAKZ,GAA1B,CAAnB;IACH;IACD;AACJ;AACA;AACA;;;;WACI,mBAAUkB,KAAV,EAAiB;MACb,KAAKpB,YAAL,IAAqB,KAAKA,YAAL,CAAkBqB,SAAlB,CAA4BD,KAA5B,CAArB;IACH;IACD;AACJ;AACA;AACA;;;;WACI,iBAAQ;MACJ,KAAKnB,MAAL,IAAe,KAAKA,MAAL,CAAYe,KAAZ,EAAf;IACH;IACD;AACJ;AACA;;;;WACI,yBAAgB,CACZ;IACH;IACD;AACJ;AACA;AACA;;;;WACI,0BAAiBM,aAAjB,EAAgC,CAC5B;IACH;IACD;AACJ;AACA;AACA;;;;WACI,sBAAaC,MAAb,EAAqB,CACjB;IACH;IACD;AACJ;AACA;AACA;;;;WACI,wBAAeC,KAAf,EAAsB,CAClB;IACH;IACD;AACJ;AACA;AACA;;;;WACI,wBAAeC,IAAf,EAAqB,CACjB;IACH;;;;;;eAEU7B,mB"}
|