@techsee/techsee-media-service 999.20.0-nodejs.lite.2 → 999.20.1-alpha
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 +28 -27
- package/lib/LocalStreamManager.d.ts +0 -1
- package/lib/LocalStreamManager.d.ts.map +1 -1
- package/lib/LocalStreamManager.js +84 -82
- package/lib/LocalStreamManager.js.map +1 -1
- package/lib/MediaConstants.d.ts +3 -21
- package/lib/MediaConstants.d.ts.map +1 -1
- package/lib/MediaConstants.js +13 -32
- package/lib/MediaConstants.js.map +1 -1
- package/lib/MediaContracts.d.ts +3 -9
- package/lib/MediaContracts.d.ts.map +1 -1
- package/lib/MediaContracts.js +4 -1
- package/lib/MediaContracts.js.map +1 -1
- package/lib/MediaPublisher.d.ts +0 -1
- package/lib/MediaPublisher.d.ts.map +1 -1
- package/lib/MediaPublisher.js +10 -7
- package/lib/MediaPublisher.js.map +1 -1
- package/lib/MediaServiceBase.d.ts +0 -1
- package/lib/MediaServiceBase.d.ts.map +1 -1
- package/lib/MediaServiceBase.js +199 -170
- package/lib/MediaServiceBase.js.map +1 -1
- package/lib/MediaSession/MediaServer.d.ts +0 -1
- package/lib/MediaSession/MediaServer.d.ts.map +1 -1
- package/lib/MediaSession/MediaServer.js +74 -62
- package/lib/MediaSession/MediaServer.js.map +1 -1
- package/lib/MediaSession/MediaSessionBase.d.ts +0 -1
- package/lib/MediaSession/MediaSessionBase.d.ts.map +1 -1
- package/lib/MediaSession/MediaSessionBase.js +23 -19
- package/lib/MediaSession/MediaSessionBase.js.map +1 -1
- package/lib/MediaSession/SessionOpentok.d.ts +2 -3
- package/lib/MediaSession/SessionOpentok.d.ts.map +1 -1
- package/lib/MediaSession/SessionOpentok.js +80 -51
- package/lib/MediaSession/SessionOpentok.js.map +1 -1
- package/lib/MediaSession/SessionTurn.d.ts +0 -1
- package/lib/MediaSession/SessionTurn.d.ts.map +1 -1
- package/lib/MediaSession/SessionTurn.js +151 -109
- package/lib/MediaSession/SessionTurn.js.map +1 -1
- package/lib/MediaSession/TurnConstants.d.ts +0 -1
- package/lib/MediaSession/TurnConstants.d.ts.map +1 -1
- package/lib/MediaSession/TurnConstants.js +16 -1
- package/lib/MediaSession/TurnConstants.js.map +1 -1
- package/lib/MediaSubscriber.d.ts +0 -1
- package/lib/MediaSubscriber.d.ts.map +1 -1
- package/lib/MediaSubscriber.js +43 -37
- package/lib/MediaSubscriber.js.map +1 -1
- package/lib/MediaUtils/Compatibility.d.ts +0 -3
- package/lib/MediaUtils/Compatibility.d.ts.map +1 -1
- package/lib/MediaUtils/Compatibility.js +34 -76
- package/lib/MediaUtils/Compatibility.js.map +1 -1
- package/lib/MediaUtils/MediaDomUtils.d.ts +3 -6
- package/lib/MediaUtils/MediaDomUtils.d.ts.map +1 -1
- package/lib/MediaUtils/MediaDomUtils.js +65 -70
- package/lib/MediaUtils/MediaDomUtils.js.map +1 -1
- package/lib/MediaUtils/MediaTracer.d.ts +0 -1
- package/lib/MediaUtils/MediaTracer.d.ts.map +1 -1
- package/lib/MediaUtils/MediaTracer.js +5 -2
- package/lib/MediaUtils/MediaTracer.js.map +1 -1
- package/lib/MultiParty/DetectWebRtcService.d.ts +14 -17
- package/lib/MultiParty/DetectWebRtcService.d.ts.map +1 -1
- package/lib/MultiParty/DetectWebRtcService.js +54 -98
- package/lib/MultiParty/DetectWebRtcService.js.map +1 -1
- package/lib/MultiParty/MediaCapabilitiesHelper.d.ts +10 -0
- package/lib/MultiParty/MediaCapabilitiesHelper.d.ts.map +1 -0
- package/lib/MultiParty/MediaCapabilitiesHelper.js +140 -0
- package/lib/MultiParty/MediaCapabilitiesHelper.js.map +1 -0
- package/lib/MultiParty/MultiParty.d.ts +21 -0
- package/lib/MultiParty/MultiParty.d.ts.map +1 -0
- package/lib/MultiParty/MultiParty.js +160 -0
- package/lib/MultiParty/MultiParty.js.map +1 -0
- package/lib/MultiParty/OpentokMultiparty.d.ts +32 -0
- package/lib/MultiParty/OpentokMultiparty.d.ts.map +1 -0
- package/lib/MultiParty/OpentokMultiparty.js +184 -0
- package/lib/MultiParty/OpentokMultiparty.js.map +1 -0
- package/lib/TechseeMediaStream.d.ts +0 -1
- package/lib/TechseeMediaStream.d.ts.map +1 -1
- package/lib/TechseeMediaStream.js +12 -9
- package/lib/TechseeMediaStream.js.map +1 -1
- package/lib/oldCode/constants.js +20 -0
- package/lib/oldCode/constants.js.map +1 -0
- package/lib/oldCode/event-emitter.js +39 -0
- package/lib/oldCode/event-emitter.js.map +1 -0
- package/lib/oldCode/index.js +64 -0
- package/lib/oldCode/index.js.map +1 -0
- package/lib/oldCode/opentok/session.js +310 -0
- package/lib/oldCode/opentok/session.js.map +1 -0
- package/lib/oldCode/opentok/stream.js +310 -0
- package/lib/oldCode/opentok/stream.js.map +1 -0
- package/lib/oldCode/publisher.js +143 -0
- package/lib/oldCode/publisher.js.map +1 -0
- package/lib/oldCode/service.js +395 -0
- package/lib/oldCode/service.js.map +1 -0
- package/lib/oldCode/session.js +110 -0
- package/lib/oldCode/session.js.map +1 -0
- package/lib/oldCode/stream.js +195 -0
- package/lib/oldCode/stream.js.map +1 -0
- package/lib/oldCode/subscriber.js +90 -0
- package/lib/oldCode/subscriber.js.map +1 -0
- package/lib/oldCode/tracer.d.ts +36 -0
- package/lib/oldCode/tracer.d.ts.map +1 -0
- package/lib/oldCode/tracer.js +161 -0
- package/lib/oldCode/tracer.js.map +1 -0
- package/lib/oldCode/utils/ImageFixer.d.ts +1 -0
- package/lib/oldCode/utils/ImageFixer.d.ts.map +1 -0
- package/lib/oldCode/utils/ImageFixer.js +59 -0
- package/lib/oldCode/utils/ImageFixer.js.map +1 -0
- package/lib/oldCode/webrtc/constants.js +114 -0
- package/lib/oldCode/webrtc/constants.js.map +1 -0
- package/lib/oldCode/webrtc/helper.js +173 -0
- package/lib/oldCode/webrtc/helper.js.map +1 -0
- package/lib/oldCode/webrtc/session-kms.js +558 -0
- package/lib/oldCode/webrtc/session-kms.js.map +1 -0
- package/lib/oldCode/webrtc/session-loopback.js +336 -0
- package/lib/oldCode/webrtc/session-loopback.js.map +1 -0
- package/lib/oldCode/webrtc/session-turn.js +880 -0
- package/lib/oldCode/webrtc/session-turn.js.map +1 -0
- package/lib/oldCode/webrtc/session-turn.v2.js +583 -0
- package/lib/oldCode/webrtc/session-turn.v2.js.map +1 -0
- package/lib/oldCode/webrtc/session.js +52 -0
- package/lib/oldCode/webrtc/session.js.map +1 -0
- package/lib/oldCode/webrtc/stream.js +674 -0
- package/lib/oldCode/webrtc/stream.js.map +1 -0
- package/lib/oldCode/webrtc/temasys/adapter-loader.js +12 -0
- package/lib/oldCode/webrtc/temasys/adapter-loader.js.map +1 -0
- package/lib/oldCode/webrtc/temasys/adapter.js +5861 -0
- package/lib/oldCode/webrtc/temasys/adapter.js.map +1 -0
- package/lib/oldCode/webrtc/webrtc-ie-shim.js +3007 -0
- package/lib/oldCode/webrtc/webrtc-ie-shim.js.map +1 -0
- package/lib/qos/raw-qos.js +145 -84
- package/lib/qos/raw-qos.js.map +1 -1
- package/lib/webrtc-ie-shim.js +2950 -1896
- package/lib/webrtc-ie-shim.js.map +1 -1
- package/package.json +59 -65
- package/lib/MediaUtils/index.d.ts +0 -2
- package/lib/MediaUtils/index.d.ts.map +0 -1
- package/lib/MediaUtils/index.js +0 -6
- package/lib/MediaUtils/index.js.map +0 -1
- package/lib/MultiParty/MediaCapabilitiesService.d.ts +0 -18
- package/lib/MultiParty/MediaCapabilitiesService.d.ts.map +0 -1
- package/lib/MultiParty/MediaCapabilitiesService.js +0 -158
- package/lib/MultiParty/MediaCapabilitiesService.js.map +0 -1
- package/lib/MultiParty/MediaCapabilitiesUtils.d.ts +0 -6
- package/lib/MultiParty/MediaCapabilitiesUtils.d.ts.map +0 -1
- package/lib/MultiParty/MediaCapabilitiesUtils.js +0 -123
- package/lib/MultiParty/MediaCapabilitiesUtils.js.map +0 -1
- package/lib/MultiParty/MediaTracer.d.ts +0 -4
- package/lib/MultiParty/MediaTracer.d.ts.map +0 -1
- package/lib/MultiParty/MediaTracer.js +0 -10
- package/lib/MultiParty/MediaTracer.js.map +0 -1
- package/lib/MultiParty/MultiPartyService.d.ts +0 -49
- package/lib/MultiParty/MultiPartyService.d.ts.map +0 -1
- package/lib/MultiParty/MultiPartyService.js +0 -30
- package/lib/MultiParty/MultiPartyService.js.map +0 -1
- package/lib/MultiParty/MultiPartyServiceFactory.d.ts +0 -4
- package/lib/MultiParty/MultiPartyServiceFactory.d.ts.map +0 -1
- package/lib/MultiParty/MultiPartyServiceFactory.js +0 -13
- package/lib/MultiParty/MultiPartyServiceFactory.js.map +0 -1
- package/lib/MultiParty/MultipartyServiceEventTypes.d.ts +0 -89
- package/lib/MultiParty/MultipartyServiceEventTypes.d.ts.map +0 -1
- package/lib/MultiParty/MultipartyServiceEventTypes.js +0 -16
- package/lib/MultiParty/MultipartyServiceEventTypes.js.map +0 -1
- package/lib/MultiParty/index.d.ts +0 -7
- package/lib/MultiParty/index.d.ts.map +0 -1
- package/lib/MultiParty/index.js +0 -25
- package/lib/MultiParty/index.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts +0 -38
- package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokMultiPartyService.js +0 -492
- package/lib/MultiParty/opentok/OpentokMultiPartyService.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokPublisher.d.ts +0 -34
- package/lib/MultiParty/opentok/OpentokPublisher.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokPublisher.js +0 -121
- package/lib/MultiParty/opentok/OpentokPublisher.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts +0 -20
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js +0 -49
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts +0 -6
- package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokScreenPublisher.js +0 -48
- package/lib/MultiParty/opentok/OpentokScreenPublisher.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokSubscriber.d.ts +0 -2
- package/lib/MultiParty/opentok/OpentokSubscriber.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokSubscriber.js +0 -26
- package/lib/MultiParty/opentok/OpentokSubscriber.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts +0 -19
- package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokVideoPublisher.js +0 -182
- package/lib/MultiParty/opentok/OpentokVideoPublisher.js.map +0 -1
- package/lib/MultiParty/opentok/trace.d.ts +0 -3
- package/lib/MultiParty/opentok/trace.d.ts.map +0 -1
- package/lib/MultiParty/opentok/trace.js +0 -18
- package/lib/MultiParty/opentok/trace.js.map +0 -1
- package/lib/MultiParty/opentok.d.ts +0 -463
- package/lib/MultiParty/types.d.ts +0 -33
- package/lib/MultiParty/types.d.ts.map +0 -1
- package/lib/MultiParty/types.js +0 -3
- package/lib/MultiParty/types.js.map +0 -1
- package/lib/MultiParty/utils.d.ts +0 -10
- package/lib/MultiParty/utils.d.ts.map +0 -1
- package/lib/MultiParty/utils.js +0 -17
- package/lib/MultiParty/utils.js.map +0 -1
- package/lib/qos/raw-qos.d.ts +0 -29
- package/lib/qos/raw-qos.d.ts.map +0 -1
- package/lib/webrtc-ie-shim.d.ts +0 -4
- package/lib/webrtc-ie-shim.d.ts.map +0 -1
|
@@ -1,61 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
return
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
2
|
+
|
|
3
|
+
var __importDefault = undefined && undefined.__importDefault || function (mod) {
|
|
4
|
+
return mod && mod.__esModule ? mod : { "default": mod };
|
|
40
5
|
};
|
|
41
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.
|
|
7
|
+
exports.registerWebRTCAdapters = exports.onMediaElementResize = exports.isVideoPlaySupportedOnDevice = exports.enumerateMediaDevices = exports.waitForOpenTokIsLoaded = exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = void 0;
|
|
43
8
|
var MediaConstants_1 = require("../MediaConstants");
|
|
44
9
|
var isEqual_1 = __importDefault(require("lodash/isEqual"));
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
11
|
+
//@ts-ignore
|
|
45
12
|
var ts_environment_detect_1 = require("@techsee/techsee-common/lib/helpers/ts-environment-detect");
|
|
46
13
|
var MediaTracer_1 = require("./MediaTracer");
|
|
47
|
-
var trace =
|
|
14
|
+
var trace = MediaTracer_1.getMediaTracer('Compatibility');
|
|
48
15
|
var environmentDetect = new ts_environment_detect_1.TsEnvironmentDetect();
|
|
49
16
|
var isIE11 = environmentDetect.isIE11();
|
|
50
17
|
var monitoredIeElements = new Map();
|
|
18
|
+
// Grace period to wait in the unlikely case that Opentok has not finished initializing,
|
|
19
|
+
// and a session initialization was requested
|
|
51
20
|
exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = 10;
|
|
52
21
|
exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = 500;
|
|
53
|
-
exports.WAIT_FOR_OPENTOK_SWITCH_CAMERA_WITH_BLUR_EFFECT = 0;
|
|
54
22
|
function _isOTDefined() {
|
|
55
23
|
try {
|
|
56
24
|
return !!window.OT;
|
|
57
|
-
}
|
|
58
|
-
catch (e) {
|
|
25
|
+
} catch (e) {
|
|
59
26
|
return false;
|
|
60
27
|
}
|
|
61
28
|
}
|
|
@@ -64,26 +31,26 @@ function waitForOpenTokIsLoaded() {
|
|
|
64
31
|
return Promise.resolve();
|
|
65
32
|
}
|
|
66
33
|
var isDefined = false;
|
|
67
|
-
return Promise
|
|
68
|
-
.reduce(new Array(exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS), function () {
|
|
34
|
+
return Promise.reduce(new Array(exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS), function () {
|
|
69
35
|
if (isDefined || _isOTDefined()) {
|
|
70
36
|
isDefined = true;
|
|
71
37
|
return Promise.resolve();
|
|
72
38
|
}
|
|
73
39
|
return Promise.delay(exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL);
|
|
74
|
-
}, 0)
|
|
75
|
-
|
|
40
|
+
}, 0).then(function () {
|
|
41
|
+
return isDefined || Promise.reject(new Error('OT is undefined'));
|
|
42
|
+
});
|
|
76
43
|
}
|
|
77
44
|
exports.waitForOpenTokIsLoaded = waitForOpenTokIsLoaded;
|
|
78
45
|
function enumerateMediaDevices() {
|
|
79
46
|
return new Promise(function (resolve, reject) {
|
|
80
47
|
if (typeof window.OT !== 'undefined' && window.OT && window.OT.getDevices) {
|
|
81
|
-
window.OT.getDevices(function (error, devices) {
|
|
82
|
-
|
|
83
|
-
|
|
48
|
+
window.OT.getDevices(function (error, devices) {
|
|
49
|
+
return error ? reject(error) : resolve(devices);
|
|
50
|
+
});
|
|
51
|
+
} else if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {
|
|
84
52
|
navigator.mediaDevices.enumerateDevices().then(resolve).catch(reject);
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
53
|
+
} else {
|
|
87
54
|
reject(new Error('Enumerating media devices is not supported'));
|
|
88
55
|
}
|
|
89
56
|
});
|
|
@@ -96,7 +63,9 @@ function isVideoPlaySupportedOnDevice(mediaServiceType) {
|
|
|
96
63
|
return Promise.resolve(true);
|
|
97
64
|
}
|
|
98
65
|
if (isOpenTokService) {
|
|
99
|
-
return waitForOpenTokIsLoaded().then(function () {
|
|
66
|
+
return waitForOpenTokIsLoaded().then(function () {
|
|
67
|
+
return window.OT && window.OTPlugin && window.OTPlugin.isInstalled && window.OTPlugin.isInstalled();
|
|
68
|
+
});
|
|
100
69
|
}
|
|
101
70
|
if (isMediaServer) {
|
|
102
71
|
return Promise.resolve(false);
|
|
@@ -109,27 +78,25 @@ function isVideoPlaySupportedOnDevice(mediaServiceType) {
|
|
|
109
78
|
exports.isVideoPlaySupportedOnDevice = isVideoPlaySupportedOnDevice;
|
|
110
79
|
function onMediaElementResize(mediaElement, onResizeHandler) {
|
|
111
80
|
var checkTimeoutPtr = null;
|
|
112
|
-
var unsubscribeIE = function () {
|
|
81
|
+
var unsubscribeIE = function unsubscribeIE() {
|
|
113
82
|
clearTimeout(checkTimeoutPtr);
|
|
114
83
|
monitoredIeElements.delete(mediaElement);
|
|
115
84
|
};
|
|
116
85
|
if (!isIE11) {
|
|
117
86
|
mediaElement.addEventListener('resize', onResizeHandler, false);
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
87
|
+
} else {
|
|
120
88
|
monitoredIeElements.set(mediaElement, {
|
|
121
89
|
videoWidth: mediaElement.videoWidth,
|
|
122
90
|
videoHeight: mediaElement.videoHeight
|
|
123
91
|
});
|
|
124
|
-
var checkElementSize_1 = function () {
|
|
92
|
+
var checkElementSize_1 = function checkElementSize_1() {
|
|
125
93
|
var lastElementSize = monitoredIeElements.get(mediaElement);
|
|
126
94
|
if (!lastElementSize) {
|
|
127
95
|
unsubscribeIE();
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
96
|
+
} else {
|
|
130
97
|
var currentSize = { videoWidth: mediaElement.videoWidth, videoHeight: mediaElement.videoHeight };
|
|
131
98
|
checkTimeoutPtr = setTimeout(checkElementSize_1, 500);
|
|
132
|
-
if (!
|
|
99
|
+
if (!isEqual_1.default(currentSize, lastElementSize)) {
|
|
133
100
|
monitoredIeElements.set(mediaElement, lastElementSize);
|
|
134
101
|
setTimeout(onResizeHandler);
|
|
135
102
|
}
|
|
@@ -140,8 +107,7 @@ function onMediaElementResize(mediaElement, onResizeHandler) {
|
|
|
140
107
|
return function () {
|
|
141
108
|
if (!isIE11) {
|
|
142
109
|
mediaElement && mediaElement.removeEventListener('resize', onResizeHandler);
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
110
|
+
} else {
|
|
145
111
|
unsubscribeIE();
|
|
146
112
|
}
|
|
147
113
|
};
|
|
@@ -150,21 +116,13 @@ exports.onMediaElementResize = onMediaElementResize;
|
|
|
150
116
|
function registerWebRTCAdapters() {
|
|
151
117
|
if (isIE11) {
|
|
152
118
|
require('../webrtc-ie-shim.js');
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
119
|
+
} else if (!(environmentDetect.isChrome() && environmentDetect.majorVersion() < 49)) {
|
|
120
|
+
require('webrtc-adapter/src/js/adapter_core'); // eslint-disable-line global-require
|
|
121
|
+
} else {
|
|
158
122
|
trace.warn('no WebRTC adapters loaded.');
|
|
159
123
|
}
|
|
160
124
|
}
|
|
161
125
|
exports.registerWebRTCAdapters = registerWebRTCAdapters;
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
return [2, Promise.delay(exports.WAIT_FOR_OPENTOK_SWITCH_CAMERA_WITH_BLUR_EFFECT)];
|
|
166
|
-
});
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
exports.waitAfterClearingFilter = waitAfterClearingFilter;
|
|
170
|
-
//# sourceMappingURL=Compatibility.js.map
|
|
126
|
+
|
|
127
|
+
//# sourceMappingURL=Compatibility.js.map
|
|
128
|
+
//# sourceMappingURL=Compatibility.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Compatibility.js","sourceRoot":"","sources":["../../src/MediaUtils/Compatibility.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["MediaUtils/Compatibility.js"],"names":["__importDefault","mod","__esModule","Object","defineProperty","exports","value","registerWebRTCAdapters","onMediaElementResize","isVideoPlaySupportedOnDevice","enumerateMediaDevices","waitForOpenTokIsLoaded","WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL","WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS","MediaConstants_1","require","isEqual_1","ts_environment_detect_1","MediaTracer_1","trace","getMediaTracer","environmentDetect","TsEnvironmentDetect","isIE11","monitoredIeElements","Map","_isOTDefined","window","OT","e","Promise","resolve","isDefined","reduce","Array","delay","then","reject","Error","getDevices","error","devices","navigator","mediaDevices","enumerateDevices","catch","mediaServiceType","isOpenTokService","MediaServiceType","OPENTOK","isMediaServer","MEDIASERVER","OTPlugin","isInstalled","WebRTCAdapter","mediaElement","onResizeHandler","checkTimeoutPtr","unsubscribeIE","clearTimeout","delete","addEventListener","set","videoWidth","videoHeight","checkElementSize_1","lastElementSize","get","currentSize","setTimeout","default","removeEventListener","isChrome","majorVersion","warn"],"mappings":"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","file":"Compatibility.js","sourcesContent":["\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.registerWebRTCAdapters = exports.onMediaElementResize = exports.isVideoPlaySupportedOnDevice = exports.enumerateMediaDevices = exports.waitForOpenTokIsLoaded = exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = void 0;\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar isEqual_1 = __importDefault(require(\"lodash/isEqual\"));\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n//@ts-ignore\nvar ts_environment_detect_1 = require(\"@techsee/techsee-common/lib/helpers/ts-environment-detect\");\nvar MediaTracer_1 = require(\"./MediaTracer\");\nvar trace = MediaTracer_1.getMediaTracer('Compatibility');\nvar environmentDetect = new ts_environment_detect_1.TsEnvironmentDetect();\nvar isIE11 = environmentDetect.isIE11();\nvar monitoredIeElements = new Map();\n// Grace period to wait in the unlikely case that Opentok has not finished initializing,\n// and a session initialization was requested\nexports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = 10;\nexports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = 500;\nfunction _isOTDefined() {\n try {\n return !!window.OT;\n }\n catch (e) {\n return false;\n }\n}\nfunction waitForOpenTokIsLoaded() {\n if (_isOTDefined()) {\n return Promise.resolve();\n }\n var isDefined = false;\n return Promise.reduce(new Array(exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS), function () {\n if (isDefined || _isOTDefined()) {\n isDefined = true;\n return Promise.resolve();\n }\n return Promise.delay(exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL);\n }, 0)\n .then(function () { return isDefined || Promise.reject(new Error('OT is undefined')); });\n}\nexports.waitForOpenTokIsLoaded = waitForOpenTokIsLoaded;\nfunction enumerateMediaDevices() {\n return new Promise(function (resolve, reject) {\n if ((typeof window.OT !== 'undefined') && window.OT && window.OT.getDevices) {\n window.OT.getDevices(function (error, devices) { return (error ? reject(error) : resolve(devices)); });\n }\n else if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {\n navigator.mediaDevices.enumerateDevices().then(resolve).catch(reject);\n }\n else {\n reject(new Error('Enumerating media devices is not supported'));\n }\n });\n}\nexports.enumerateMediaDevices = enumerateMediaDevices;\nfunction isVideoPlaySupportedOnDevice(mediaServiceType) {\n var isOpenTokService = mediaServiceType === MediaConstants_1.MediaServiceType.OPENTOK;\n var isMediaServer = mediaServiceType === MediaConstants_1.MediaServiceType.MEDIASERVER;\n if (!isIE11) {\n return Promise.resolve(true);\n }\n if (isOpenTokService) {\n return waitForOpenTokIsLoaded().then(function () { return window.OT && window.OTPlugin && window.OTPlugin.isInstalled && window.OTPlugin.isInstalled(); });\n }\n if (isMediaServer) {\n return Promise.resolve(false);\n }\n if (window.WebRTCAdapter) {\n return Promise.resolve(true);\n }\n return Promise.resolve(false);\n}\nexports.isVideoPlaySupportedOnDevice = isVideoPlaySupportedOnDevice;\nfunction onMediaElementResize(mediaElement, onResizeHandler) {\n var checkTimeoutPtr = null;\n var unsubscribeIE = function () {\n clearTimeout(checkTimeoutPtr);\n monitoredIeElements.delete(mediaElement);\n };\n if (!isIE11) {\n mediaElement.addEventListener('resize', onResizeHandler, false);\n }\n else {\n monitoredIeElements.set(mediaElement, {\n videoWidth: mediaElement.videoWidth,\n videoHeight: mediaElement.videoHeight\n });\n var checkElementSize_1 = function () {\n var lastElementSize = monitoredIeElements.get(mediaElement);\n if (!lastElementSize) {\n unsubscribeIE();\n }\n else {\n var currentSize = { videoWidth: mediaElement.videoWidth, videoHeight: mediaElement.videoHeight };\n checkTimeoutPtr = setTimeout(checkElementSize_1, 500);\n if (!isEqual_1.default(currentSize, lastElementSize)) {\n monitoredIeElements.set(mediaElement, lastElementSize);\n setTimeout(onResizeHandler);\n }\n }\n };\n checkElementSize_1();\n }\n return function () {\n if (!isIE11) {\n mediaElement && mediaElement.removeEventListener('resize', onResizeHandler);\n }\n else {\n unsubscribeIE();\n }\n };\n}\nexports.onMediaElementResize = onMediaElementResize;\nfunction registerWebRTCAdapters() {\n if (isIE11) {\n require('../webrtc-ie-shim.js');\n }\n else if (!(environmentDetect.isChrome() && (environmentDetect.majorVersion() < 49))) {\n require('webrtc-adapter/src/js/adapter_core'); // eslint-disable-line global-require\n }\n else {\n trace.warn('no WebRTC adapters loaded.');\n }\n}\nexports.registerWebRTCAdapters = registerWebRTCAdapters;\n\n//# sourceMappingURL=Compatibility.js.map\n"]}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import { SnapshotOptions
|
|
2
|
-
|
|
3
|
-
export declare function calculateResolution({ videoWidth, videoHeight }: VideoResolution): VideoResolutionFormat;
|
|
4
|
-
export declare function renderMediaStreamToVideoEl(container: HTMLDivElement, mediaStream: MediaStream, streamType: KnownMediaStream): Promise<HTMLVideoElement>;
|
|
1
|
+
import { SnapshotOptions } from '../MediaContracts';
|
|
2
|
+
export declare function renderMediaStreamToVideoEl(container: HTMLDivElement, mediaStream: MediaStream): Promise<HTMLVideoElement>;
|
|
5
3
|
export declare function removeVideoElementFromDom(videoEl: HTMLVideoElement): Promise<void>;
|
|
6
|
-
export declare function getSnapshotFromMediaStream(mediaStream: MediaStream,
|
|
7
|
-
//# sourceMappingURL=MediaDomUtils.d.ts.map
|
|
4
|
+
export declare function getSnapshotFromMediaStream(mediaStream: MediaStream, snapshotOptions?: SnapshotOptions): Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/MediaUtils/MediaDomUtils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAOlD,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoFzH;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBlF;AAOD,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,WAAW,EAAE,eAAe,GAAE,eAAiC,GAAG,OAAO,CAAC,MAAM,CAAC,CAqGxI","file":"MediaDomUtils.d.ts","sourcesContent":["import isUndefined from 'lodash/isUndefined';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n//@ts-ignore\nimport {TsEnvironmentDetect} from '@techsee/techsee-common/lib/helpers/ts-environment-detect';\nimport {repeatWithTimeout} from '@techsee/techsee-common/lib/core/retry-with-timeout';\nimport {SnapshotOptions} from '../MediaContracts';\nimport {getMediaTracer} from './MediaTracer';\n\nconst trace = getMediaTracer('DomUtils');\n\nconst isIE11 = (new TsEnvironmentDetect()).isIE11();\n\nexport function renderMediaStreamToVideoEl(container: HTMLDivElement, mediaStream: MediaStream): Promise<HTMLVideoElement> {\n return new Promise((resolve, reject) => {\n if (!document.body.contains(container)) {\n reject(new Error('Cannot render to container that is not attached to dom'));\n\n return;\n }\n\n const doResolve = (videoEl: HTMLVideoElement): void => {\n trace.info('Video element created successfully', {videoEl});\n resolve(videoEl);\n };\n\n const videoEl = document.createElement('video') as any;\n\n videoEl.muted = true;\n videoEl.playsInline = true;\n\n if (isIE11 && (window as any).WebRTCAdapter) {\n container.appendChild(videoEl);\n (window as any).WebRTCAdapter.bindVideoElement(videoEl);\n }\n\n videoEl.srcObject = mediaStream;\n\n // When unplugged the headphones in ios the video element got paused.\n videoEl.addEventListener('pause', () => {\n trace.info('Video element got paused. IOS headphones disconnected');\n videoEl.play();\n });\n\n if (!isIE11) {\n // Hack to override behavior introduced by Chrome/FF that unmuted video elements can't auto play\n videoEl.setAttribute('muted', '');\n }\n\n try {\n const playRes = videoEl.play();\n\n if (playRes && playRes.then) {\n playRes.then(() => {\n trace.info('Video element play success');\n if (!isIE11) {\n doResolve(videoEl);\n }\n });\n } else if (!isIE11) {\n doResolve(videoEl);\n }\n\n if (playRes && playRes.catch) {\n playRes.catch((error: any) => {\n trace.error('Reject while executing play method on video element', error);\n reject(error);\n });\n }\n } catch (error) {\n reject(error);\n trace.error('Error while executing play method on video element', error);\n\n return;\n }\n\n\n if (isIE11) {\n const handleComplete = (): boolean => videoEl.parentElement.tagName !== 'OBJECT';\n\n const waitForObjectSettings = {intervalInMs: 30, timeoutInMs: 200};\n\n repeatWithTimeout(handleComplete, waitForObjectSettings)\n .then(() => {\n //We will wait, until video is played, then we resolve\n const isVideoPlaying = (): boolean => videoEl.videoHeight <= 0 || videoEl.videoWidth <= 0;\n const waitForVideoSettings = {intervalInMs: 50, timeoutInMs: 10000};\n\n repeatWithTimeout(isVideoPlaying, waitForVideoSettings)\n .then(() => doResolve(videoEl.parentElement))\n .catch(() => reject(new Error('Timeout while waiting for video to play')));\n });\n } else {\n container.appendChild(videoEl);\n //doResolve(videoEl);\n }\n });\n}\n\nexport function removeVideoElementFromDom(videoEl: HTMLVideoElement): Promise<void> {\n return new Promise((resolve) => {\n if (isIE11 && (window as any).WebRTCAdapter) {\n (window as any).WebRTCAdapter.unBindVideoElement(videoEl);\n if (videoEl && videoEl.parentNode && videoEl.parentNode.removeChild) {\n videoEl.parentNode.removeChild(videoEl);\n trace.info('Video element removed successfully');\n } else {\n trace.warn('Video element not removed', videoEl, videoEl.parentNode);\n }\n } else {\n videoEl.remove();\n }\n\n resolve();\n });\n}\n\nconst defaultSnapshot: SnapshotOptions = {\n format: 'image/png',\n quality: 0.92\n};\n\nexport function getSnapshotFromMediaStream(mediaStream: MediaStream, snapshotOptions: SnapshotOptions = defaultSnapshot): Promise<string> {\n const {format, quality, x, y, w, h} = snapshotOptions;\n const crop = !isUndefined(x) && !isUndefined(y) && !isUndefined(w) && !isUndefined(h);\n const resize = !crop && (!isUndefined(w) || !isUndefined(h));\n\n return new Promise((resolve, reject) => {\n\n const tempContainer = document.createElement('div');\n\n tempContainer.style.cssText = 'position:absolute;left: -10000px;';\n document.body.appendChild(tempContainer);\n\n const doneFn = (err: any, image?: any): void => {\n if (err) {\n reject(err);\n\n return;\n }\n\n setTimeout(() => {\n document.body.removeChild(tempContainer);\n if (!err) {\n resolve(image);\n }\n }, 50);\n };\n\n renderMediaStreamToVideoEl(tempContainer, mediaStream)\n .then((videoElement) => Promise.resolve(isIE11 ? getImgDataIE11(videoElement) : getImgData(videoElement))\n .then((imgData: any) => {\n if (!imgData || imgData.length < 10) {\n throw new Error('Failed to create a snapshot - imgData is null or empty');\n }\n\n doneFn(null, imgData);\n }))\n .catch((error) => {\n doneFn(error || new Error('Failed to create a snapshot - can\\'t render MediaStream To VideoEl '));\n });\n });\n\n //Gets image in all browsers except of IE\n function getImgData(videoElement: HTMLVideoElement): string {\n const {videoWidth, videoHeight} = videoElement;\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d')!;\n\n if (crop) {\n canvas.width = w;\n canvas.height = h;\n\n ctx.drawImage(videoElement, x, y, w, h, 0, 0, w, h);\n } else if (resize) {\n canvas.width = w;\n canvas.height = h;\n\n ctx.drawImage(videoElement, 0, 0, w, h);\n } else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n\n ctx.drawImage(videoElement, 0, 0);\n }\n\n return canvas.toDataURL(format, quality);\n }\n\n //Gets image in IE browser. There should be TechSee IE11 plugin or OpenTok plugin installed.\n function getImgDataIE11(videoElement: any): Promise<string> {\n return new Promise((resolve) => {\n const {videoWidth, videoHeight} = videoElement;\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d')!;\n\n if (crop || resize) {\n canvas.width = w;\n canvas.height = h;\n } else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n }\n\n function _drawAndRemove(image: any): string {\n if (crop) {\n ctx.drawImage(image, x, y, w, h, 0, 0, w, h);\n } else if (resize) {\n ctx.drawImage(image, 0, 0, w, h);\n } else {\n ctx.drawImage(image, 0, 0, videoWidth, videoHeight);\n }\n\n return canvas.toDataURL(format, quality);\n }\n\n const base64 = videoElement.getFrame();\n const image = new Image();\n\n image.onload = () => resolve(_drawAndRemove(image));\n image.setAttribute('src', 'data:image/bmp;base64,' + base64);\n });\n }\n}\n"]}
|
|
@@ -1,37 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
|
|
3
|
+
var __importDefault = undefined && undefined.__importDefault || function (mod) {
|
|
4
|
+
return mod && mod.__esModule ? mod : { "default": mod };
|
|
4
5
|
};
|
|
5
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getSnapshotFromMediaStream = exports.removeVideoElementFromDom = exports.renderMediaStreamToVideoEl =
|
|
7
|
+
exports.getSnapshotFromMediaStream = exports.removeVideoElementFromDom = exports.renderMediaStreamToVideoEl = void 0;
|
|
7
8
|
var isUndefined_1 = __importDefault(require("lodash/isUndefined"));
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
10
|
+
//@ts-ignore
|
|
8
11
|
var ts_environment_detect_1 = require("@techsee/techsee-common/lib/helpers/ts-environment-detect");
|
|
9
12
|
var retry_with_timeout_1 = require("@techsee/techsee-common/lib/core/retry-with-timeout");
|
|
10
13
|
var MediaTracer_1 = require("./MediaTracer");
|
|
11
|
-
var
|
|
12
|
-
var trace = (0, MediaTracer_1.getMediaTracer)('DomUtils');
|
|
14
|
+
var trace = MediaTracer_1.getMediaTracer('DomUtils');
|
|
13
15
|
var isIE11 = new ts_environment_detect_1.TsEnvironmentDetect().isIE11();
|
|
14
|
-
function
|
|
15
|
-
var videoWidth = _a.videoWidth, videoHeight = _a.videoHeight;
|
|
16
|
-
var multiplyResolution = videoWidth * videoHeight;
|
|
17
|
-
var videoResolutionFormat = MediaConstants_1.VideoResolutionFormat.NONE;
|
|
18
|
-
if (multiplyResolution >= MediaConstants_1.VideoResolutionMultiplication.HD) {
|
|
19
|
-
videoResolutionFormat = MediaConstants_1.VideoResolutionFormat.HD;
|
|
20
|
-
}
|
|
21
|
-
if (multiplyResolution >= MediaConstants_1.VideoResolutionMultiplication.SD &&
|
|
22
|
-
multiplyResolution < MediaConstants_1.VideoResolutionMultiplication.HD) {
|
|
23
|
-
videoResolutionFormat = MediaConstants_1.VideoResolutionFormat.SD;
|
|
24
|
-
}
|
|
25
|
-
return videoResolutionFormat;
|
|
26
|
-
}
|
|
27
|
-
exports.calculateResolution = calculateResolution;
|
|
28
|
-
function renderMediaStreamToVideoEl(container, mediaStream, streamType) {
|
|
16
|
+
function renderMediaStreamToVideoEl(container, mediaStream) {
|
|
29
17
|
return new Promise(function (resolve, reject) {
|
|
30
18
|
if (!document.body.contains(container)) {
|
|
31
19
|
reject(new Error('Cannot render to container that is not attached to dom'));
|
|
32
20
|
return;
|
|
33
21
|
}
|
|
34
|
-
var doResolve = function (videoEl) {
|
|
22
|
+
var doResolve = function doResolve(videoEl) {
|
|
35
23
|
trace.info('Video element created successfully', { videoEl: videoEl });
|
|
36
24
|
resolve(videoEl);
|
|
37
25
|
};
|
|
@@ -43,17 +31,13 @@ function renderMediaStreamToVideoEl(container, mediaStream, streamType) {
|
|
|
43
31
|
window.WebRTCAdapter.bindVideoElement(videoEl);
|
|
44
32
|
}
|
|
45
33
|
videoEl.srcObject = mediaStream;
|
|
34
|
+
// When unplugged the headphones in ios the video element got paused.
|
|
46
35
|
videoEl.addEventListener('pause', function () {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
MediaConstants_1.KnownMediaStream.AGENT_AUDIO_STREAM,
|
|
50
|
-
MediaConstants_1.KnownMediaStream.OBSERVER_AUDIO_STREAM
|
|
51
|
-
].indexOf(streamType) > -1) {
|
|
52
|
-
trace.info('Video element got paused. IOS headphones disconnected');
|
|
53
|
-
videoEl.play();
|
|
54
|
-
}
|
|
36
|
+
trace.info('Video element got paused. IOS headphones disconnected');
|
|
37
|
+
videoEl.play();
|
|
55
38
|
});
|
|
56
39
|
if (!isIE11) {
|
|
40
|
+
// Hack to override behavior introduced by Chrome/FF that unmuted video elements can't auto play
|
|
57
41
|
videoEl.setAttribute('muted', '');
|
|
58
42
|
}
|
|
59
43
|
try {
|
|
@@ -65,8 +49,7 @@ function renderMediaStreamToVideoEl(container, mediaStream, streamType) {
|
|
|
65
49
|
doResolve(videoEl);
|
|
66
50
|
}
|
|
67
51
|
});
|
|
68
|
-
}
|
|
69
|
-
else if (!isIE11) {
|
|
52
|
+
} else if (!isIE11) {
|
|
70
53
|
doResolve(videoEl);
|
|
71
54
|
}
|
|
72
55
|
if (playRes && playRes.catch) {
|
|
@@ -75,25 +58,31 @@ function renderMediaStreamToVideoEl(container, mediaStream, streamType) {
|
|
|
75
58
|
reject(error);
|
|
76
59
|
});
|
|
77
60
|
}
|
|
78
|
-
}
|
|
79
|
-
catch (error) {
|
|
61
|
+
} catch (error) {
|
|
80
62
|
reject(error);
|
|
81
63
|
trace.error('Error while executing play method on video element', error);
|
|
82
64
|
return;
|
|
83
65
|
}
|
|
84
66
|
if (isIE11) {
|
|
85
|
-
var handleComplete = function () {
|
|
67
|
+
var handleComplete = function handleComplete() {
|
|
68
|
+
return videoEl.parentElement.tagName !== 'OBJECT';
|
|
69
|
+
};
|
|
86
70
|
var waitForObjectSettings = { intervalInMs: 30, timeoutInMs: 200 };
|
|
87
|
-
|
|
88
|
-
|
|
71
|
+
retry_with_timeout_1.repeatWithTimeout(handleComplete, waitForObjectSettings).then(function () {
|
|
72
|
+
//We will wait, until video is played, then we resolve
|
|
73
|
+
var isVideoPlaying = function isVideoPlaying() {
|
|
74
|
+
return videoEl.videoHeight <= 0 || videoEl.videoWidth <= 0;
|
|
75
|
+
};
|
|
89
76
|
var waitForVideoSettings = { intervalInMs: 50, timeoutInMs: 10000 };
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
77
|
+
retry_with_timeout_1.repeatWithTimeout(isVideoPlaying, waitForVideoSettings).then(function () {
|
|
78
|
+
return doResolve(videoEl.parentElement);
|
|
79
|
+
}).catch(function () {
|
|
80
|
+
return reject(new Error('Timeout while waiting for video to play'));
|
|
81
|
+
});
|
|
93
82
|
});
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
83
|
+
} else {
|
|
96
84
|
container.appendChild(videoEl);
|
|
85
|
+
//doResolve(videoEl);
|
|
97
86
|
}
|
|
98
87
|
});
|
|
99
88
|
}
|
|
@@ -105,12 +94,10 @@ function removeVideoElementFromDom(videoEl) {
|
|
|
105
94
|
if (videoEl && videoEl.parentNode && videoEl.parentNode.removeChild) {
|
|
106
95
|
videoEl.parentNode.removeChild(videoEl);
|
|
107
96
|
trace.info('Video element removed successfully');
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
97
|
+
} else {
|
|
110
98
|
trace.warn('Video element not removed', videoEl, videoEl.parentNode);
|
|
111
99
|
}
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
100
|
+
} else {
|
|
114
101
|
videoEl.remove();
|
|
115
102
|
}
|
|
116
103
|
resolve();
|
|
@@ -121,16 +108,23 @@ var defaultSnapshot = {
|
|
|
121
108
|
format: 'image/png',
|
|
122
109
|
quality: 0.92
|
|
123
110
|
};
|
|
124
|
-
function getSnapshotFromMediaStream(mediaStream,
|
|
125
|
-
if (snapshotOptions === void 0) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
var
|
|
111
|
+
function getSnapshotFromMediaStream(mediaStream, snapshotOptions) {
|
|
112
|
+
if (snapshotOptions === void 0) {
|
|
113
|
+
snapshotOptions = defaultSnapshot;
|
|
114
|
+
}
|
|
115
|
+
var format = snapshotOptions.format,
|
|
116
|
+
quality = snapshotOptions.quality,
|
|
117
|
+
x = snapshotOptions.x,
|
|
118
|
+
y = snapshotOptions.y,
|
|
119
|
+
w = snapshotOptions.w,
|
|
120
|
+
h = snapshotOptions.h;
|
|
121
|
+
var crop = !isUndefined_1.default(x) && !isUndefined_1.default(y) && !isUndefined_1.default(w) && !isUndefined_1.default(h);
|
|
122
|
+
var resize = !crop && (!isUndefined_1.default(w) || !isUndefined_1.default(h));
|
|
129
123
|
return new Promise(function (resolve, reject) {
|
|
130
124
|
var tempContainer = document.createElement('div');
|
|
131
125
|
tempContainer.style.cssText = 'position:absolute;left: -10000px;';
|
|
132
126
|
document.body.appendChild(tempContainer);
|
|
133
|
-
var doneFn = function (err, image) {
|
|
127
|
+
var doneFn = function doneFn(err, image) {
|
|
134
128
|
if (err) {
|
|
135
129
|
reject(err);
|
|
136
130
|
return;
|
|
@@ -142,71 +136,72 @@ function getSnapshotFromMediaStream(mediaStream, sourceStream, snapshotOptions)
|
|
|
142
136
|
}
|
|
143
137
|
}, 50);
|
|
144
138
|
};
|
|
145
|
-
renderMediaStreamToVideoEl(tempContainer, mediaStream
|
|
146
|
-
.then(function (videoElement) {
|
|
139
|
+
renderMediaStreamToVideoEl(tempContainer, mediaStream).then(function (videoElement) {
|
|
147
140
|
return Promise.resolve(isIE11 ? getImgDataIE11(videoElement) : getImgData(videoElement)).then(function (imgData) {
|
|
148
141
|
if (!imgData || imgData.length < 10) {
|
|
149
142
|
throw new Error('Failed to create a snapshot - imgData is null or empty');
|
|
150
143
|
}
|
|
151
144
|
doneFn(null, imgData);
|
|
152
145
|
});
|
|
153
|
-
})
|
|
154
|
-
|
|
155
|
-
return doneFn(error || new Error('Failed to create a snapshot - cannot render MediaStream To VideoEl'));
|
|
146
|
+
}).catch(function (error) {
|
|
147
|
+
doneFn(error || new Error('Failed to create a snapshot - can\'t render MediaStream To VideoEl '));
|
|
156
148
|
});
|
|
157
149
|
});
|
|
150
|
+
//Gets image in all browsers except of IE
|
|
158
151
|
function getImgData(videoElement) {
|
|
159
|
-
var videoWidth = videoElement.videoWidth,
|
|
152
|
+
var videoWidth = videoElement.videoWidth,
|
|
153
|
+
videoHeight = videoElement.videoHeight;
|
|
160
154
|
var canvas = document.createElement('canvas');
|
|
161
155
|
var ctx = canvas.getContext('2d');
|
|
162
156
|
if (crop) {
|
|
163
157
|
canvas.width = w;
|
|
164
158
|
canvas.height = h;
|
|
165
159
|
ctx.drawImage(videoElement, x, y, w, h, 0, 0, w, h);
|
|
166
|
-
}
|
|
167
|
-
else if (resize) {
|
|
160
|
+
} else if (resize) {
|
|
168
161
|
canvas.width = w;
|
|
169
162
|
canvas.height = h;
|
|
170
163
|
ctx.drawImage(videoElement, 0, 0, w, h);
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
164
|
+
} else {
|
|
173
165
|
canvas.height = videoHeight;
|
|
174
166
|
canvas.width = videoWidth;
|
|
175
167
|
ctx.drawImage(videoElement, 0, 0);
|
|
176
168
|
}
|
|
177
169
|
return canvas.toDataURL(format, quality);
|
|
178
170
|
}
|
|
171
|
+
//Gets image in IE browser. There should be TechSee IE11 plugin or OpenTok plugin installed.
|
|
179
172
|
function getImgDataIE11(videoElement) {
|
|
180
173
|
return new Promise(function (resolve) {
|
|
181
|
-
var videoWidth = videoElement.videoWidth,
|
|
174
|
+
var videoWidth = videoElement.videoWidth,
|
|
175
|
+
videoHeight = videoElement.videoHeight;
|
|
182
176
|
var canvas = document.createElement('canvas');
|
|
183
177
|
var ctx = canvas.getContext('2d');
|
|
184
178
|
if (crop || resize) {
|
|
185
179
|
canvas.width = w;
|
|
186
180
|
canvas.height = h;
|
|
187
|
-
}
|
|
188
|
-
else {
|
|
181
|
+
} else {
|
|
189
182
|
canvas.height = videoHeight;
|
|
190
183
|
canvas.width = videoWidth;
|
|
191
184
|
}
|
|
192
185
|
function _drawAndRemove(image) {
|
|
193
186
|
if (crop) {
|
|
194
187
|
ctx.drawImage(image, x, y, w, h, 0, 0, w, h);
|
|
195
|
-
}
|
|
196
|
-
else if (resize) {
|
|
188
|
+
} else if (resize) {
|
|
197
189
|
ctx.drawImage(image, 0, 0, w, h);
|
|
198
|
-
}
|
|
199
|
-
else {
|
|
190
|
+
} else {
|
|
200
191
|
ctx.drawImage(image, 0, 0, videoWidth, videoHeight);
|
|
201
192
|
}
|
|
202
193
|
return canvas.toDataURL(format, quality);
|
|
203
194
|
}
|
|
204
195
|
var base64 = videoElement.getFrame();
|
|
205
196
|
var image = new Image();
|
|
206
|
-
image.onload = function () {
|
|
197
|
+
image.onload = function () {
|
|
198
|
+
return resolve(_drawAndRemove(image));
|
|
199
|
+
};
|
|
207
200
|
image.setAttribute('src', 'data:image/bmp;base64,' + base64);
|
|
208
201
|
});
|
|
209
202
|
}
|
|
210
203
|
}
|
|
211
204
|
exports.getSnapshotFromMediaStream = getSnapshotFromMediaStream;
|
|
212
|
-
|
|
205
|
+
|
|
206
|
+
//# sourceMappingURL=MediaDomUtils.js.map
|
|
207
|
+
//# sourceMappingURL=MediaDomUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaDomUtils.js","sourceRoot":"","sources":["../../src/MediaUtils/MediaDomUtils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["MediaUtils/MediaDomUtils.js"],"names":["__importDefault","mod","__esModule","Object","defineProperty","exports","value","getSnapshotFromMediaStream","removeVideoElementFromDom","renderMediaStreamToVideoEl","isUndefined_1","require","ts_environment_detect_1","retry_with_timeout_1","MediaTracer_1","trace","getMediaTracer","isIE11","TsEnvironmentDetect","container","mediaStream","Promise","resolve","reject","document","body","contains","Error","doResolve","videoEl","info","createElement","muted","playsInline","window","WebRTCAdapter","appendChild","bindVideoElement","srcObject","addEventListener","play","setAttribute","playRes","then","catch","error","handleComplete","parentElement","tagName","waitForObjectSettings","intervalInMs","timeoutInMs","repeatWithTimeout","isVideoPlaying","videoHeight","videoWidth","waitForVideoSettings","unBindVideoElement","parentNode","removeChild","warn","remove","defaultSnapshot","format","quality","snapshotOptions","x","y","w","h","crop","default","resize","tempContainer","style","cssText","doneFn","err","image","setTimeout","videoElement","getImgDataIE11","getImgData","imgData","length","canvas","ctx","getContext","width","height","drawImage","toDataURL","_drawAndRemove","base64","getFrame","Image","onload"],"mappings":"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","file":"MediaDomUtils.js","sourcesContent":["\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSnapshotFromMediaStream = exports.removeVideoElementFromDom = exports.renderMediaStreamToVideoEl = void 0;\nvar isUndefined_1 = __importDefault(require(\"lodash/isUndefined\"));\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n//@ts-ignore\nvar ts_environment_detect_1 = require(\"@techsee/techsee-common/lib/helpers/ts-environment-detect\");\nvar retry_with_timeout_1 = require(\"@techsee/techsee-common/lib/core/retry-with-timeout\");\nvar MediaTracer_1 = require(\"./MediaTracer\");\nvar trace = MediaTracer_1.getMediaTracer('DomUtils');\nvar isIE11 = (new ts_environment_detect_1.TsEnvironmentDetect()).isIE11();\nfunction renderMediaStreamToVideoEl(container, mediaStream) {\n return new Promise(function (resolve, reject) {\n if (!document.body.contains(container)) {\n reject(new Error('Cannot render to container that is not attached to dom'));\n return;\n }\n var doResolve = function (videoEl) {\n trace.info('Video element created successfully', { videoEl: videoEl });\n resolve(videoEl);\n };\n var videoEl = document.createElement('video');\n videoEl.muted = true;\n videoEl.playsInline = true;\n if (isIE11 && window.WebRTCAdapter) {\n container.appendChild(videoEl);\n window.WebRTCAdapter.bindVideoElement(videoEl);\n }\n videoEl.srcObject = mediaStream;\n // When unplugged the headphones in ios the video element got paused.\n videoEl.addEventListener('pause', function () {\n trace.info('Video element got paused. IOS headphones disconnected');\n videoEl.play();\n });\n if (!isIE11) {\n // Hack to override behavior introduced by Chrome/FF that unmuted video elements can't auto play\n videoEl.setAttribute('muted', '');\n }\n try {\n var playRes = videoEl.play();\n if (playRes && playRes.then) {\n playRes.then(function () {\n trace.info('Video element play success');\n if (!isIE11) {\n doResolve(videoEl);\n }\n });\n }\n else if (!isIE11) {\n doResolve(videoEl);\n }\n if (playRes && playRes.catch) {\n playRes.catch(function (error) {\n trace.error('Reject while executing play method on video element', error);\n reject(error);\n });\n }\n }\n catch (error) {\n reject(error);\n trace.error('Error while executing play method on video element', error);\n return;\n }\n if (isIE11) {\n var handleComplete = function () { return videoEl.parentElement.tagName !== 'OBJECT'; };\n var waitForObjectSettings = { intervalInMs: 30, timeoutInMs: 200 };\n retry_with_timeout_1.repeatWithTimeout(handleComplete, waitForObjectSettings)\n .then(function () {\n //We will wait, until video is played, then we resolve\n var isVideoPlaying = function () { return videoEl.videoHeight <= 0 || videoEl.videoWidth <= 0; };\n var waitForVideoSettings = { intervalInMs: 50, timeoutInMs: 10000 };\n retry_with_timeout_1.repeatWithTimeout(isVideoPlaying, waitForVideoSettings)\n .then(function () { return doResolve(videoEl.parentElement); })\n .catch(function () { return reject(new Error('Timeout while waiting for video to play')); });\n });\n }\n else {\n container.appendChild(videoEl);\n //doResolve(videoEl);\n }\n });\n}\nexports.renderMediaStreamToVideoEl = renderMediaStreamToVideoEl;\nfunction removeVideoElementFromDom(videoEl) {\n return new Promise(function (resolve) {\n if (isIE11 && window.WebRTCAdapter) {\n window.WebRTCAdapter.unBindVideoElement(videoEl);\n if (videoEl && videoEl.parentNode && videoEl.parentNode.removeChild) {\n videoEl.parentNode.removeChild(videoEl);\n trace.info('Video element removed successfully');\n }\n else {\n trace.warn('Video element not removed', videoEl, videoEl.parentNode);\n }\n }\n else {\n videoEl.remove();\n }\n resolve();\n });\n}\nexports.removeVideoElementFromDom = removeVideoElementFromDom;\nvar defaultSnapshot = {\n format: 'image/png',\n quality: 0.92\n};\nfunction getSnapshotFromMediaStream(mediaStream, snapshotOptions) {\n if (snapshotOptions === void 0) { snapshotOptions = defaultSnapshot; }\n var format = snapshotOptions.format, quality = snapshotOptions.quality, x = snapshotOptions.x, y = snapshotOptions.y, w = snapshotOptions.w, h = snapshotOptions.h;\n var crop = !isUndefined_1.default(x) && !isUndefined_1.default(y) && !isUndefined_1.default(w) && !isUndefined_1.default(h);\n var resize = !crop && (!isUndefined_1.default(w) || !isUndefined_1.default(h));\n return new Promise(function (resolve, reject) {\n var tempContainer = document.createElement('div');\n tempContainer.style.cssText = 'position:absolute;left: -10000px;';\n document.body.appendChild(tempContainer);\n var doneFn = function (err, image) {\n if (err) {\n reject(err);\n return;\n }\n setTimeout(function () {\n document.body.removeChild(tempContainer);\n if (!err) {\n resolve(image);\n }\n }, 50);\n };\n renderMediaStreamToVideoEl(tempContainer, mediaStream)\n .then(function (videoElement) { return Promise.resolve(isIE11 ? getImgDataIE11(videoElement) : getImgData(videoElement))\n .then(function (imgData) {\n if (!imgData || imgData.length < 10) {\n throw new Error('Failed to create a snapshot - imgData is null or empty');\n }\n doneFn(null, imgData);\n }); })\n .catch(function (error) {\n doneFn(error || new Error('Failed to create a snapshot - can\\'t render MediaStream To VideoEl '));\n });\n });\n //Gets image in all browsers except of IE\n function getImgData(videoElement) {\n var videoWidth = videoElement.videoWidth, videoHeight = videoElement.videoHeight;\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (crop) {\n canvas.width = w;\n canvas.height = h;\n ctx.drawImage(videoElement, x, y, w, h, 0, 0, w, h);\n }\n else if (resize) {\n canvas.width = w;\n canvas.height = h;\n ctx.drawImage(videoElement, 0, 0, w, h);\n }\n else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n ctx.drawImage(videoElement, 0, 0);\n }\n return canvas.toDataURL(format, quality);\n }\n //Gets image in IE browser. There should be TechSee IE11 plugin or OpenTok plugin installed.\n function getImgDataIE11(videoElement) {\n return new Promise(function (resolve) {\n var videoWidth = videoElement.videoWidth, videoHeight = videoElement.videoHeight;\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (crop || resize) {\n canvas.width = w;\n canvas.height = h;\n }\n else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n }\n function _drawAndRemove(image) {\n if (crop) {\n ctx.drawImage(image, x, y, w, h, 0, 0, w, h);\n }\n else if (resize) {\n ctx.drawImage(image, 0, 0, w, h);\n }\n else {\n ctx.drawImage(image, 0, 0, videoWidth, videoHeight);\n }\n return canvas.toDataURL(format, quality);\n }\n var base64 = videoElement.getFrame();\n var image = new Image();\n image.onload = function () { return resolve(_drawAndRemove(image)); };\n image.setAttribute('src', 'data:image/bmp;base64,' + base64);\n });\n }\n}\nexports.getSnapshotFromMediaStream = getSnapshotFromMediaStream;\n\n//# sourceMappingURL=MediaDomUtils.js.map\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/MediaUtils/MediaTracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,cAAc,EAAC,MAAM,yCAAyC,CAAC;AAElF,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAElD,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAElE","file":"MediaTracer.d.ts","sourcesContent":["import {getTracer, ITechseeTracer} from '@techsee/techsee-common/lib/core/Tracer';\n\nexport const TECHSEE_MEDIA_TRACER = 'MediaTracer';\n\nexport function getMediaTracer(postfixName: string): ITechseeTracer {\n return getTracer(TECHSEE_MEDIA_TRACER, postfixName);\n}\n"]}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
4
|
exports.getMediaTracer = exports.TECHSEE_MEDIA_TRACER = void 0;
|
|
4
5
|
var Tracer_1 = require("@techsee/techsee-common/lib/core/Tracer");
|
|
5
6
|
exports.TECHSEE_MEDIA_TRACER = 'MediaTracer';
|
|
6
7
|
function getMediaTracer(postfixName) {
|
|
7
|
-
return
|
|
8
|
+
return Tracer_1.getTracer(exports.TECHSEE_MEDIA_TRACER, postfixName);
|
|
8
9
|
}
|
|
9
10
|
exports.getMediaTracer = getMediaTracer;
|
|
10
|
-
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=MediaTracer.js.map
|
|
13
|
+
//# sourceMappingURL=MediaTracer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["MediaUtils/MediaTracer.js"],"names":["Object","defineProperty","exports","value","getMediaTracer","TECHSEE_MEDIA_TRACER","Tracer_1","require","postfixName","getTracer"],"mappings":"AAAA;;AACAA,OAAOC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C,EAAEC,OAAO,IAAT,EAA7C;AACAD,QAAQE,cAAR,GAAyBF,QAAQG,oBAAR,GAA+B,KAAK,CAA7D;AACA,IAAIC,WAAWC,QAAQ,yCAAR,CAAf;AACAL,QAAQG,oBAAR,GAA+B,aAA/B;AACA,SAASD,cAAT,CAAwBI,WAAxB,EAAqC;AACjC,WAAOF,SAASG,SAAT,CAAmBP,QAAQG,oBAA3B,EAAiDG,WAAjD,CAAP;AACH;AACDN,QAAQE,cAAR,GAAyBA,cAAzB;;AAEA","file":"MediaTracer.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMediaTracer = exports.TECHSEE_MEDIA_TRACER = void 0;\nvar Tracer_1 = require(\"@techsee/techsee-common/lib/core/Tracer\");\nexports.TECHSEE_MEDIA_TRACER = 'MediaTracer';\nfunction getMediaTracer(postfixName) {\n return Tracer_1.getTracer(exports.TECHSEE_MEDIA_TRACER, postfixName);\n}\nexports.getMediaTracer = getMediaTracer;\n\n//# sourceMappingURL=MediaTracer.js.map\n"]}
|