@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
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.TsOpenTokSession = undefined;
|
|
5
|
+
|
|
6
|
+
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
7
|
+
|
|
8
|
+
var _session = require('../session');
|
|
9
|
+
|
|
10
|
+
var _publisher = require('../publisher');
|
|
11
|
+
|
|
12
|
+
var _subscriber = require('../subscriber');
|
|
13
|
+
|
|
14
|
+
var _stream = require('./stream');
|
|
15
|
+
|
|
16
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
17
|
+
|
|
18
|
+
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
19
|
+
|
|
20
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
21
|
+
|
|
22
|
+
var TsOpenTokSession = exports.TsOpenTokSession = function (_TsMediaSession) {
|
|
23
|
+
_inherits(TsOpenTokSession, _TsMediaSession);
|
|
24
|
+
|
|
25
|
+
function TsOpenTokSession(_ref) {
|
|
26
|
+
var credentials = _ref.credentials;
|
|
27
|
+
|
|
28
|
+
_classCallCheck(this, TsOpenTokSession);
|
|
29
|
+
|
|
30
|
+
var _this = _possibleConstructorReturn(this, _TsMediaSession.call(this));
|
|
31
|
+
|
|
32
|
+
_this._credentials = credentials;
|
|
33
|
+
_this._session = OT.initSession(credentials.apiKey, credentials.sessionId);
|
|
34
|
+
return _this;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
TsOpenTokSession.prototype._disconnectIfAlreadyConnected = function _disconnectIfAlreadyConnected() {
|
|
38
|
+
if (!this._session.isConnected()) {
|
|
39
|
+
return Promise.resolve();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return this.disconnect(true);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
TsOpenTokSession.prototype.connect = function connect() {
|
|
46
|
+
var _this2 = this;
|
|
47
|
+
|
|
48
|
+
return this._disconnectIfAlreadyConnected().then(function () {
|
|
49
|
+
return new Promise(function (resolve, reject) {
|
|
50
|
+
_this2._session.on('sessionConnected', function () {
|
|
51
|
+
_this2.emit(_session.EVENTS.CONNECTED);
|
|
52
|
+
});
|
|
53
|
+
_this2._session.on('sessionDisconnected', function (e) {
|
|
54
|
+
_this2.emit(_session.EVENTS.DISCONNECTED, e);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
_this2._session.on('streamCreated', function (e) {
|
|
58
|
+
_this2.emit(_session.EVENTS.STREAM_CREATED, new _stream.TsOpenTokStream(_this2, e.stream));
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
_this2._session.on('streamDestroyed', function (e) {
|
|
62
|
+
_this2._streams.delete(e.stream.id);
|
|
63
|
+
|
|
64
|
+
_this2.emit(_session.EVENTS.STREAM_DESTROYED, e);
|
|
65
|
+
});
|
|
66
|
+
_this2._session.on('streamPropertyChanged', function (e) {
|
|
67
|
+
if (e.changedProperty === 'videoDimensions') {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
var stream = _this2._streams.get(e.stream.id);
|
|
72
|
+
|
|
73
|
+
var newEvent = {
|
|
74
|
+
stream: stream,
|
|
75
|
+
property: e.changedProperty,
|
|
76
|
+
value: e.newValue
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
_this2.emit(_session.EVENTS.STREAM_PROPERTY_CHANGED, newEvent);
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
_this2._session.connect(_this2._credentials.token, function (error) {
|
|
83
|
+
if (error) {
|
|
84
|
+
_this2._session.off();
|
|
85
|
+
|
|
86
|
+
return reject(error);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return resolve();
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
TsOpenTokSession.prototype.disconnect = function disconnect(keepSession) {
|
|
96
|
+
var _this3 = this;
|
|
97
|
+
|
|
98
|
+
return new Promise(function (resolve) {
|
|
99
|
+
_this3._session.off();
|
|
100
|
+
|
|
101
|
+
var sessionFinalized = false;
|
|
102
|
+
|
|
103
|
+
var finalizeSession = function finalizeSession(event) {
|
|
104
|
+
if (sessionFinalized) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
sessionFinalized = true;
|
|
109
|
+
|
|
110
|
+
if (!keepSession) {
|
|
111
|
+
_this3._session = null;
|
|
112
|
+
|
|
113
|
+
_this3.emit(_session.EVENTS.DISCONNECTED);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
resolve(event);
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
_this3._session.once('sessionDisconnected', function (event) {
|
|
120
|
+
return finalizeSession(event);
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
setTimeout(function () {
|
|
124
|
+
return finalizeSession({ reason: 'clientDisconnectedTimeout' });
|
|
125
|
+
}, 5000);
|
|
126
|
+
|
|
127
|
+
_this3._session.disconnect();
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
TsOpenTokSession.prototype.createPublisher = function createPublisher(target, params) {
|
|
132
|
+
var _this4 = this;
|
|
133
|
+
|
|
134
|
+
if (!params) {
|
|
135
|
+
params = target;
|
|
136
|
+
target = null;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
var otparams = {
|
|
140
|
+
videoSource: null,
|
|
141
|
+
audioSource: null,
|
|
142
|
+
showControls: false,
|
|
143
|
+
name: params.name,
|
|
144
|
+
publishAudio: false,
|
|
145
|
+
publishVideo: false,
|
|
146
|
+
constraints: {
|
|
147
|
+
video: {
|
|
148
|
+
facingMode: 'environment'
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
if (params.videoDevice) {
|
|
154
|
+
_.assign(otparams, {
|
|
155
|
+
publishVideo: true,
|
|
156
|
+
videoSource: params.videoDevice
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
otparams.constraints.video.deviceId = params.videoDevice;
|
|
160
|
+
|
|
161
|
+
if (params.videoParams) {
|
|
162
|
+
_.assign(otparams, params.videoParams);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if (params.audioDevice) {
|
|
167
|
+
_.assign(otparams, {
|
|
168
|
+
publishAudio: true,
|
|
169
|
+
audioSource: params.audioDevice
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
return new Promise(function (resolve, reject) {
|
|
174
|
+
var otpublisher = OT.initPublisher(target, otparams, function (error) {
|
|
175
|
+
if (error) {
|
|
176
|
+
return reject(error);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
var publisher = new _publisher.TsMediaPublisher(_this4, {
|
|
180
|
+
_otpublisher: otpublisher
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
return resolve(publisher);
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
TsOpenTokSession.prototype.publish = function publish(publisher) {
|
|
189
|
+
var _this5 = this;
|
|
190
|
+
|
|
191
|
+
return new Promise(function (resolve, reject) {
|
|
192
|
+
publisher._otpublisher.once('streamCreated', function (event) {
|
|
193
|
+
var stream = new _stream.TsOpenTokStream(_this5, event.stream);
|
|
194
|
+
|
|
195
|
+
publisher.stream = stream;
|
|
196
|
+
stream.publisher = publisher;
|
|
197
|
+
stream.remote = false;
|
|
198
|
+
|
|
199
|
+
publisher.videoWidth = publisher._otpublisher.videoWidth();
|
|
200
|
+
publisher.videoHeight = publisher._otpublisher.videoHeight();
|
|
201
|
+
|
|
202
|
+
publisher.emit(_publisher.EVENTS.STREAM_CREATED, stream);
|
|
203
|
+
|
|
204
|
+
var video = stream.getVideoElement(publisher._otpublisher.element)[0];
|
|
205
|
+
|
|
206
|
+
stream.setupDimensionsListener(video);
|
|
207
|
+
|
|
208
|
+
return resolve();
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
publisher._otpublisher.once('destroyed', function () {
|
|
212
|
+
publisher.emit(_publisher.EVENTS.DESTROYED);
|
|
213
|
+
|
|
214
|
+
publisher._otpublisher.off();
|
|
215
|
+
publisher._otpublisher = null;
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
_this5._session.publish(publisher._otpublisher, function (error) {
|
|
219
|
+
if (error) {
|
|
220
|
+
return reject(error);
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
TsOpenTokSession.prototype.destroyPublisher = function destroyPublisher(publisher) {
|
|
227
|
+
return new Promise(function (resolve) {
|
|
228
|
+
publisher._otpublisher.off();
|
|
229
|
+
|
|
230
|
+
publisher._otpublisher.once('destroyed', function () {
|
|
231
|
+
publisher._otpublisher = null;
|
|
232
|
+
|
|
233
|
+
resolve();
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
publisher._otpublisher.destroy();
|
|
237
|
+
});
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
TsOpenTokSession.prototype.createSubscriber = function createSubscriber(stream, target, params) {
|
|
241
|
+
var _this6 = this;
|
|
242
|
+
|
|
243
|
+
return new Promise(function (resolve, reject) {
|
|
244
|
+
if (stream._otstream.destroyed) {
|
|
245
|
+
return reject(stream._otstream.destroyedReason);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
var finish = _.once(function (err, res) {
|
|
249
|
+
if (err) {
|
|
250
|
+
return reject(err);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
return resolve(res);
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
function onDestroy(event) {
|
|
257
|
+
if (event.stream.id === stream._otstream.id) {
|
|
258
|
+
finish(event.stream.destroyedReason);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
_this6._session.on('streamDestroyed', onDestroy);
|
|
263
|
+
var otsubscriber = _this6._session.subscribe(stream._otstream, target, params, function (error) {
|
|
264
|
+
_this6._session.off('streamDestroyed', onDestroy);
|
|
265
|
+
|
|
266
|
+
if (error) {
|
|
267
|
+
return finish(error);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
var subscriber = new _subscriber.TsMediaSubscriber({
|
|
271
|
+
stream: stream,
|
|
272
|
+
_otsubscriber: otsubscriber,
|
|
273
|
+
_session: _this6
|
|
274
|
+
});
|
|
275
|
+
|
|
276
|
+
return finish(null, subscriber);
|
|
277
|
+
});
|
|
278
|
+
});
|
|
279
|
+
};
|
|
280
|
+
|
|
281
|
+
TsOpenTokSession.prototype.destroySubscriber = function destroySubscriber(subscriber) {
|
|
282
|
+
if (!subscriber._otsubscriber || !(subscriber._otsubscriber.element || subscriber._otsubscriber.stream)) {
|
|
283
|
+
return Promise.resolve();
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
return new Promise(function (resolve) {
|
|
287
|
+
subscriber._otsubscriber.off();
|
|
288
|
+
|
|
289
|
+
subscriber._otsubscriber.on('destroyed', function () {
|
|
290
|
+
subscriber._otsubscriber = null;
|
|
291
|
+
|
|
292
|
+
return resolve();
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
subscriber._otsubscriber.destroy();
|
|
296
|
+
}).timeout(5000).catch(function () {
|
|
297
|
+
return null;
|
|
298
|
+
});
|
|
299
|
+
};
|
|
300
|
+
|
|
301
|
+
_createClass(TsOpenTokSession, [{
|
|
302
|
+
key: 'id',
|
|
303
|
+
get: function get() {
|
|
304
|
+
return this._session && this._session.sessionId;
|
|
305
|
+
}
|
|
306
|
+
}]);
|
|
307
|
+
|
|
308
|
+
return TsOpenTokSession;
|
|
309
|
+
}(_session.TsMediaSession);
|
|
310
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["oldCode/opentok/session.js"],"names":["TsOpenTokSession","credentials","_credentials","_session","OT","initSession","apiKey","sessionId","_disconnectIfAlreadyConnected","isConnected","Promise","resolve","disconnect","connect","then","reject","on","emit","EVENTS","CONNECTED","e","DISCONNECTED","STREAM_CREATED","TsOpenTokStream","stream","_streams","delete","id","STREAM_DESTROYED","changedProperty","get","newEvent","property","value","newValue","STREAM_PROPERTY_CHANGED","token","error","off","keepSession","sessionFinalized","finalizeSession","event","once","setTimeout","reason","createPublisher","target","params","otparams","videoSource","audioSource","showControls","name","publishAudio","publishVideo","constraints","video","facingMode","videoDevice","_","assign","deviceId","videoParams","audioDevice","otpublisher","initPublisher","publisher","TsMediaPublisher","_otpublisher","publish","remote","videoWidth","videoHeight","PUBLISHER_EVENTS","getVideoElement","element","setupDimensionsListener","DESTROYED","destroyPublisher","destroy","createSubscriber","_otstream","destroyed","destroyedReason","finish","err","res","onDestroy","otsubscriber","subscribe","subscriber","TsMediaSubscriber","_otsubscriber","destroySubscriber","timeout","catch","TsMediaSession"],"mappings":";;;;;;;AAAA;;AAKA;;AAKA;;AAIA;;;;;;;;IAIaA,gB,WAAAA,gB;;;AACT,oCAA2B;AAAA,YAAdC,WAAc,QAAdA,WAAc;;AAAA;;AAAA,qDACvB,0BADuB;;AAGvB,cAAKC,YAAL,GAAoBD,WAApB;AACA,cAAKE,QAAL,GAAgBC,GAAGC,WAAH,CACZJ,YAAYK,MADA,EAEZL,YAAYM,SAFA,CAAhB;AAJuB;AAQ1B;;+BAMDC,6B,4CAAgC;AAC5B,YAAI,CAAC,KAAKL,QAAL,CAAcM,WAAd,EAAL,EAAkC;AAC9B,mBAAOC,QAAQC,OAAR,EAAP;AACH;;AAED,eAAO,KAAKC,UAAL,CAAgB,IAAhB,CAAP;AACH,K;;+BAEDC,O,sBAAU;AAAA;;AACN,eAAO,KAAKL,6BAAL,GACFM,IADE,CACG;AAAA,mBAAM,IAAIJ,OAAJ,CAAY,UAACC,OAAD,EAAUI,MAAV,EAAqB;AACzC,uBAAKZ,QAAL,CAAca,EAAd,CAAiB,kBAAjB,EAAqC,YAAM;AACvC,2BAAKC,IAAL,CAAUC,gBAAOC,SAAjB;AACH,iBAFD;AAGA,uBAAKhB,QAAL,CAAca,EAAd,CAAiB,qBAAjB,EAAwC,UAACI,CAAD,EAAO;AAC3C,2BAAKH,IAAL,CAAUC,gBAAOG,YAAjB,EAA+BD,CAA/B;AACH,iBAFD;;AAIA,uBAAKjB,QAAL,CAAca,EAAd,CAAiB,eAAjB,EAAkC,UAACI,CAAD,EAAO;AACrC,2BAAKH,IAAL,CAAUC,gBAAOI,cAAjB,EAAiC,IAAIC,uBAAJ,CAAoB,MAApB,EAA0BH,EAAEI,MAA5B,CAAjC;AACH,iBAFD;;AAIA,uBAAKrB,QAAL,CAAca,EAAd,CAAiB,iBAAjB,EAAoC,UAACI,CAAD,EAAO;AACvC,2BAAKK,QAAL,CAAcC,MAAd,CAAqBN,EAAEI,MAAF,CAASG,EAA9B;;AAEA,2BAAKV,IAAL,CAAUC,gBAAOU,gBAAjB,EAAmCR,CAAnC;AACH,iBAJD;AAKA,uBAAKjB,QAAL,CAAca,EAAd,CAAiB,uBAAjB,EAA0C,UAACI,CAAD,EAAO;AAC7C,wBAAIA,EAAES,eAAF,KAAsB,iBAA1B,EAA6C;AACzC;AACH;;AAED,wBAAML,SAAS,OAAKC,QAAL,CAAcK,GAAd,CAAkBV,EAAEI,MAAF,CAASG,EAA3B,CAAf;;AAEA,wBAAMI,WAAW;AACbP,sCADa;AAEbQ,kCAAUZ,EAAES,eAFC;AAGbI,+BAAOb,EAAEc;AAHI,qBAAjB;;AAMA,2BAAKjB,IAAL,CAAUC,gBAAOiB,uBAAjB,EAA0CJ,QAA1C;AACH,iBAdD;;AAiBA,uBAAK5B,QAAL,CAAcU,OAAd,CAAsB,OAAKX,YAAL,CAAkBkC,KAAxC,EAA+C,UAACC,KAAD,EAAW;AACtD,wBAAIA,KAAJ,EAAW;AACP,+BAAKlC,QAAL,CAAcmC,GAAd;;AAEA,+BAAOvB,OAAOsB,KAAP,CAAP;AACH;;AAED,2BAAO1B,SAAP;AACH,iBARD;AASH,aA3CW,CAAN;AAAA,SADH,CAAP;AA6CH,K;;+BAEDC,U,uBAAW2B,W,EAAa;AAAA;;AACpB,eAAO,IAAI7B,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC5B,mBAAKR,QAAL,CAAcmC,GAAd;;AAEA,gBAAIE,mBAAmB,KAAvB;;AAEA,gBAAMC,kBAAkB,SAAlBA,eAAkB,CAACC,KAAD,EAAW;AAC/B,oBAAIF,gBAAJ,EAAsB;AAClB;AACH;;AAEDA,mCAAmB,IAAnB;;AAEA,oBAAI,CAACD,WAAL,EAAkB;AACd,2BAAKpC,QAAL,GAAgB,IAAhB;;AAEA,2BAAKc,IAAL,CAAUC,gBAAOG,YAAjB;AACH;;AAEDV,wBAAQ+B,KAAR;AACH,aAdD;;AAgBA,mBAAKvC,QAAL,CAAcwC,IAAd,CAAmB,qBAAnB,EAA0C,UAACD,KAAD;AAAA,uBAAWD,gBAAgBC,KAAhB,CAAX;AAAA,aAA1C;;AAEAE,uBAAW;AAAA,uBAAMH,gBAAgB,EAACI,QAAQ,2BAAT,EAAhB,CAAN;AAAA,aAAX,EAAyE,IAAzE;;AAEA,mBAAK1C,QAAL,CAAcS,UAAd;AACH,SA1BM,CAAP;AA2BH,K;;+BAEDkC,e,4BAAgBC,M,EAAQC,M,EAAQ;AAAA;;AAC5B,YAAI,CAACA,MAAL,EAAa;AACTA,qBAASD,MAAT;AACAA,qBAAS,IAAT;AACH;;AAED,YAAME,WAAW;AACbC,yBAAa,IADA;AAEbC,yBAAa,IAFA;AAGbC,0BAAc,KAHD;AAIbC,kBAAML,OAAOK,IAJA;AAKbC,0BAAc,KALD;AAMbC,0BAAc,KAND;AAObC,yBAAa;AACTC,uBAAO;AACHC,gCAAY;AADT;AADE;AAPA,SAAjB;;AAcA,YAAIV,OAAOW,WAAX,EAAwB;AACpBC,cAAEC,MAAF,CAASZ,QAAT,EAAmB;AACfM,8BAAc,IADC;AAEfL,6BAAaF,OAAOW;AAFL,aAAnB;;AAKAV,qBAASO,WAAT,CAAqBC,KAArB,CAA2BK,QAA3B,GAAsCd,OAAOW,WAA7C;;AAEA,gBAAIX,OAAOe,WAAX,EAAwB;AACpBH,kBAAEC,MAAF,CAASZ,QAAT,EAAmBD,OAAOe,WAA1B;AACH;AACJ;;AAED,YAAIf,OAAOgB,WAAX,EAAwB;AACpBJ,cAAEC,MAAF,CAASZ,QAAT,EAAmB;AACfK,8BAAc,IADC;AAEfH,6BAAaH,OAAOgB;AAFL,aAAnB;AAIH;;AAED,eAAO,IAAItD,OAAJ,CAAY,UAACC,OAAD,EAAUI,MAAV,EAAqB;AACpC,gBAAMkD,cAAc7D,GAAG8D,aAAH,CAAiBnB,MAAjB,EAAyBE,QAAzB,EAAmC,UAACZ,KAAD,EAAW;AAC9D,oBAAIA,KAAJ,EAAW;AACP,2BAAOtB,OAAOsB,KAAP,CAAP;AACH;;AAED,oBAAM8B,YAAY,IAAIC,2BAAJ,CAAqB,MAArB,EAA2B;AACzCC,kCAAcJ;AAD2B,iBAA3B,CAAlB;;AAIA,uBAAOtD,QAAQwD,SAAR,CAAP;AACH,aAVmB,CAApB;AAWH,SAZM,CAAP;AAaH,K;;+BAEDG,O,oBAAQH,S,EAAW;AAAA;;AACf,eAAO,IAAIzD,OAAJ,CAAY,UAACC,OAAD,EAAUI,MAAV,EAAqB;AACpCoD,sBAAUE,YAAV,CAAuB1B,IAAvB,CAA4B,eAA5B,EAA6C,UAACD,KAAD,EAAW;AACpD,oBAAMlB,SAAS,IAAID,uBAAJ,CAAoB,MAApB,EAA0BmB,MAAMlB,MAAhC,CAAf;;AAEA2C,0BAAU3C,MAAV,GAAmBA,MAAnB;AACAA,uBAAO2C,SAAP,GAAmBA,SAAnB;AACA3C,uBAAO+C,MAAP,GAAgB,KAAhB;;AAEAJ,0BAAUK,UAAV,GAAuBL,UAAUE,YAAV,CAAuBG,UAAvB,EAAvB;AACAL,0BAAUM,WAAV,GAAwBN,UAAUE,YAAV,CAAuBI,WAAvB,EAAxB;;AAEAN,0BAAUlD,IAAV,CAAeyD,kBAAiBpD,cAAhC,EAAgDE,MAAhD;;AAEA,oBAAMiC,QAAQjC,OAAOmD,eAAP,CAAuBR,UAAUE,YAAV,CAAuBO,OAA9C,EAAuD,CAAvD,CAAd;;AAEApD,uBAAOqD,uBAAP,CAA+BpB,KAA/B;;AAEA,uBAAO9C,SAAP;AACH,aAjBD;;AAmBAwD,sBAAUE,YAAV,CAAuB1B,IAAvB,CAA4B,WAA5B,EAAyC,YAAM;AAC3CwB,0BAAUlD,IAAV,CAAeyD,kBAAiBI,SAAhC;;AAEAX,0BAAUE,YAAV,CAAuB/B,GAAvB;AACA6B,0BAAUE,YAAV,GAAyB,IAAzB;AACH,aALD;;AAOA,mBAAKlE,QAAL,CAAcmE,OAAd,CAAsBH,UAAUE,YAAhC,EAA8C,UAAChC,KAAD,EAAW;AACrD,oBAAIA,KAAJ,EAAW;AACP,2BAAOtB,OAAOsB,KAAP,CAAP;AACH;AACJ,aAJD;AAKH,SAhCM,CAAP;AAiCH,K;;+BAED0C,gB,6BAAiBZ,S,EAAW;AACxB,eAAO,IAAIzD,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC5BwD,sBAAUE,YAAV,CAAuB/B,GAAvB;;AAEA6B,sBAAUE,YAAV,CAAuB1B,IAAvB,CAA4B,WAA5B,EAAyC,YAAM;AAC3CwB,0BAAUE,YAAV,GAAyB,IAAzB;;AAEA1D;AACH,aAJD;;AAMAwD,sBAAUE,YAAV,CAAuBW,OAAvB;AACH,SAVM,CAAP;AAWH,K;;+BAEDC,gB,6BAAiBzD,M,EAAQuB,M,EAAQC,M,EAAQ;AAAA;;AACrC,eAAO,IAAItC,OAAJ,CAAY,UAACC,OAAD,EAAUI,MAAV,EAAqB;AACpC,gBAAIS,OAAO0D,SAAP,CAAiBC,SAArB,EAAgC;AAC5B,uBAAOpE,OAAOS,OAAO0D,SAAP,CAAiBE,eAAxB,CAAP;AACH;;AAED,gBAAMC,SAASzB,EAAEjB,IAAF,CAAO,UAAC2C,GAAD,EAAMC,GAAN,EAAc;AAChC,oBAAID,GAAJ,EAAS;AACL,2BAAOvE,OAAOuE,GAAP,CAAP;AACH;;AAED,uBAAO3E,QAAQ4E,GAAR,CAAP;AACH,aANc,CAAf;;AAQA,qBAASC,SAAT,CAAmB9C,KAAnB,EAA0B;AACtB,oBAAIA,MAAMlB,MAAN,CAAaG,EAAb,KAAoBH,OAAO0D,SAAP,CAAiBvD,EAAzC,EAA6C;AACzC0D,2BAAO3C,MAAMlB,MAAN,CAAa4D,eAApB;AACH;AACJ;;AAED,mBAAKjF,QAAL,CAAca,EAAd,CAAiB,iBAAjB,EAAoCwE,SAApC;AACA,gBAAMC,eAAe,OAAKtF,QAAL,CAAcuF,SAAd,CACjBlE,OAAO0D,SADU,EACCnC,MADD,EACSC,MADT,EAEjB,UAACX,KAAD,EAAW;AACP,uBAAKlC,QAAL,CAAcmC,GAAd,CAAkB,iBAAlB,EAAqCkD,SAArC;;AAEA,oBAAInD,KAAJ,EAAW;AACP,2BAAOgD,OAAOhD,KAAP,CAAP;AACH;;AAED,oBAAMsD,aAAa,IAAIC,6BAAJ,CAAsB;AACrCpE,kCADqC;AAErCqE,mCAAeJ,YAFsB;AAGrCtF,8BAAU;AAH2B,iBAAtB,CAAnB;;AAMA,uBAAOkF,OAAO,IAAP,EAAaM,UAAb,CAAP;AACH,aAhBgB,CAArB;AAkBH,SAtCM,CAAP;AAuCH,K;;+BAEDG,iB,8BAAkBH,U,EAAY;AAC1B,YAAI,CAACA,WAAWE,aAAZ,IAA6B,EAAEF,WAAWE,aAAX,CAAyBjB,OAAzB,IAAoCe,WAAWE,aAAX,CAAyBrE,MAA/D,CAAjC,EAAyG;AACrG,mBAAOd,QAAQC,OAAR,EAAP;AACH;;AAED,eAAO,IAAID,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC5BgF,uBAAWE,aAAX,CAAyBvD,GAAzB;;AAEAqD,uBAAWE,aAAX,CAAyB7E,EAAzB,CAA4B,WAA5B,EAAyC,YAAM;AAC3C2E,2BAAWE,aAAX,GAA2B,IAA3B;;AAEA,uBAAOlF,SAAP;AACH,aAJD;;AAMAgF,uBAAWE,aAAX,CAAyBb,OAAzB;AACH,SAVM,EAWFe,OAXE,CAWM,IAXN,EAYFC,KAZE,CAYI;AAAA,mBAAM,IAAN;AAAA,SAZJ,CAAP;AAaH,K;;;;4BA/PQ;AACL,mBAAO,KAAK7F,QAAL,IAAiB,KAAKA,QAAL,CAAcI,SAAtC;AACH;;;;EAbiC0F,uB","file":"session.js","sourcesContent":["import {\n EVENTS,\n TsMediaSession,\n} from '../session';\n\nimport {\n EVENTS as PUBLISHER_EVENTS,\n TsMediaPublisher,\n} from '../publisher';\n\nimport {\n TsMediaSubscriber,\n} from '../subscriber';\n\nimport {\n TsOpenTokStream,\n} from './stream';\n\nexport class TsOpenTokSession extends TsMediaSession {\n constructor({credentials}) {\n super();\n\n this._credentials = credentials;\n this._session = OT.initSession(\n credentials.apiKey,\n credentials.sessionId\n );\n }\n\n get id() {\n return this._session && this._session.sessionId;\n }\n\n _disconnectIfAlreadyConnected() {\n if (!this._session.isConnected()) {\n return Promise.resolve();\n }\n\n return this.disconnect(true);\n }\n\n connect() {\n return this._disconnectIfAlreadyConnected()\n .then(() => new Promise((resolve, reject) => {\n this._session.on('sessionConnected', () => {\n this.emit(EVENTS.CONNECTED);\n });\n this._session.on('sessionDisconnected', (e) => {\n this.emit(EVENTS.DISCONNECTED, e);\n });\n\n this._session.on('streamCreated', (e) => {\n this.emit(EVENTS.STREAM_CREATED, new TsOpenTokStream(this, e.stream));\n });\n\n this._session.on('streamDestroyed', (e) => {\n this._streams.delete(e.stream.id);\n\n this.emit(EVENTS.STREAM_DESTROYED, e);\n });\n this._session.on('streamPropertyChanged', (e) => {\n if (e.changedProperty === 'videoDimensions') {\n return;\n }\n\n const stream = this._streams.get(e.stream.id);\n\n const newEvent = {\n stream,\n property: e.changedProperty,\n value: e.newValue,\n };\n\n this.emit(EVENTS.STREAM_PROPERTY_CHANGED, newEvent);\n });\n\n\n this._session.connect(this._credentials.token, (error) => {\n if (error) {\n this._session.off();\n\n return reject(error);\n }\n\n return resolve();\n });\n }));\n }\n\n disconnect(keepSession) {\n return new Promise((resolve) => {\n this._session.off();\n\n let sessionFinalized = false;\n\n const finalizeSession = (event) => {\n if (sessionFinalized) {\n return;\n }\n\n sessionFinalized = true;\n\n if (!keepSession) {\n this._session = null;\n\n this.emit(EVENTS.DISCONNECTED);\n }\n\n resolve(event);\n };\n\n this._session.once('sessionDisconnected', (event) => finalizeSession(event));\n\n setTimeout(() => finalizeSession({reason: 'clientDisconnectedTimeout'}), 5000);\n\n this._session.disconnect();\n });\n }\n\n createPublisher(target, params) {\n if (!params) {\n params = target;\n target = null;\n }\n\n const otparams = {\n videoSource: null,\n audioSource: null,\n showControls: false,\n name: params.name,\n publishAudio: false,\n publishVideo: false,\n constraints: {\n video: {\n facingMode: 'environment'\n }\n }\n };\n\n if (params.videoDevice) {\n _.assign(otparams, {\n publishVideo: true,\n videoSource: params.videoDevice,\n });\n\n otparams.constraints.video.deviceId = params.videoDevice;\n\n if (params.videoParams) {\n _.assign(otparams, params.videoParams);\n }\n }\n\n if (params.audioDevice) {\n _.assign(otparams, {\n publishAudio: true,\n audioSource: params.audioDevice,\n });\n }\n\n return new Promise((resolve, reject) => {\n const otpublisher = OT.initPublisher(target, otparams, (error) => {\n if (error) {\n return reject(error);\n }\n\n const publisher = new TsMediaPublisher(this, {\n _otpublisher: otpublisher,\n });\n\n return resolve(publisher);\n });\n });\n }\n\n publish(publisher) {\n return new Promise((resolve, reject) => {\n publisher._otpublisher.once('streamCreated', (event) => {\n const stream = new TsOpenTokStream(this, event.stream);\n\n publisher.stream = stream;\n stream.publisher = publisher;\n stream.remote = false;\n\n publisher.videoWidth = publisher._otpublisher.videoWidth();\n publisher.videoHeight = publisher._otpublisher.videoHeight();\n\n publisher.emit(PUBLISHER_EVENTS.STREAM_CREATED, stream);\n\n const video = stream.getVideoElement(publisher._otpublisher.element)[0];\n\n stream.setupDimensionsListener(video);\n\n return resolve();\n });\n\n publisher._otpublisher.once('destroyed', () => {\n publisher.emit(PUBLISHER_EVENTS.DESTROYED);\n\n publisher._otpublisher.off();\n publisher._otpublisher = null;\n });\n\n this._session.publish(publisher._otpublisher, (error) => {\n if (error) {\n return reject(error);\n }\n });\n });\n }\n\n destroyPublisher(publisher) {\n return new Promise((resolve) => {\n publisher._otpublisher.off();\n\n publisher._otpublisher.once('destroyed', () => {\n publisher._otpublisher = null;\n\n resolve();\n });\n\n publisher._otpublisher.destroy();\n });\n }\n\n createSubscriber(stream, target, params) {\n return new Promise((resolve, reject) => {\n if (stream._otstream.destroyed) {\n return reject(stream._otstream.destroyedReason);\n }\n\n const finish = _.once((err, res) => {\n if (err) {\n return reject(err);\n }\n\n return resolve(res);\n });\n\n function onDestroy(event) {\n if (event.stream.id === stream._otstream.id) {\n finish(event.stream.destroyedReason);\n }\n }\n\n this._session.on('streamDestroyed', onDestroy);\n const otsubscriber = this._session.subscribe(\n stream._otstream, target, params,\n (error) => {\n this._session.off('streamDestroyed', onDestroy);\n\n if (error) {\n return finish(error);\n }\n\n const subscriber = new TsMediaSubscriber({\n stream,\n _otsubscriber: otsubscriber,\n _session: this,\n });\n\n return finish(null, subscriber);\n }\n );\n });\n }\n\n destroySubscriber(subscriber) {\n if (!subscriber._otsubscriber || !(subscriber._otsubscriber.element || subscriber._otsubscriber.stream)) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n subscriber._otsubscriber.off();\n\n subscriber._otsubscriber.on('destroyed', () => {\n subscriber._otsubscriber = null;\n\n return resolve();\n });\n\n subscriber._otsubscriber.destroy();\n })\n .timeout(5000)\n .catch(() => null);\n }\n}\n\n"]}
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.TsOpenTokStream = exports.EVENTS = undefined;
|
|
5
|
+
|
|
6
|
+
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
7
|
+
|
|
8
|
+
var _stream = require('../stream');
|
|
9
|
+
|
|
10
|
+
var _subscriber = require('../subscriber');
|
|
11
|
+
|
|
12
|
+
var _publisher = require('../publisher');
|
|
13
|
+
|
|
14
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
15
|
+
|
|
16
|
+
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
17
|
+
|
|
18
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
19
|
+
|
|
20
|
+
exports.EVENTS = _stream.EVENTS;
|
|
21
|
+
|
|
22
|
+
var TsOpenTokStream = exports.TsOpenTokStream = function (_TsMediaStream) {
|
|
23
|
+
_inherits(TsOpenTokStream, _TsMediaStream);
|
|
24
|
+
|
|
25
|
+
function TsOpenTokStream(session, otstream) {
|
|
26
|
+
_classCallCheck(this, TsOpenTokStream);
|
|
27
|
+
|
|
28
|
+
var _this = _possibleConstructorReturn(this, _TsMediaStream.call(this, otstream.id, session));
|
|
29
|
+
|
|
30
|
+
_this._otstream = otstream;
|
|
31
|
+
_this._session = session;
|
|
32
|
+
|
|
33
|
+
_this._videoChannelExists = _this._otstream.channel && _this._otstream.channel.filter(function (channel) {
|
|
34
|
+
return channel.type === 'video';
|
|
35
|
+
}).length > 0;
|
|
36
|
+
_this._audioChannelExists = _this._otstream.channel && _this._otstream.channel.filter(function (channel) {
|
|
37
|
+
return channel.type === 'audio';
|
|
38
|
+
}).length > 0;
|
|
39
|
+
return _this;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
TsOpenTokStream.prototype.publishAudio = function publishAudio(publish) {
|
|
43
|
+
if (this.publisher) {
|
|
44
|
+
this.publisher._otpublisher.publishAudio(publish);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
TsOpenTokStream.prototype.publishVideo = function publishVideo(publish) {
|
|
49
|
+
if (this.publisher) {
|
|
50
|
+
this.publisher._otpublisher.publishVideo(publish);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
TsOpenTokStream.prototype.subscribe = function subscribe(target, params) {
|
|
55
|
+
var _this2 = this;
|
|
56
|
+
|
|
57
|
+
if (!params) {
|
|
58
|
+
params = target;
|
|
59
|
+
target = null;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return this._session.createSubscriber(this, target, params).then(function (subscriber) {
|
|
63
|
+
subscriber.stream = _this2;
|
|
64
|
+
_this2.subscriber = subscriber;
|
|
65
|
+
|
|
66
|
+
subscriber._otsubscriber.on('destroyed', function (e) {
|
|
67
|
+
subscriber.emit(_subscriber.EVENTS.DESTROYED, e);
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
subscriber._otsubscriber.on('disconnected', function (e) {
|
|
71
|
+
subscriber.emit(_subscriber.EVENTS.DISCONNECTED, e);
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
var video = _this2.getVideoElement(subscriber._otsubscriber.element)[0];
|
|
75
|
+
|
|
76
|
+
if (!_this2._environment.isIE11()) {
|
|
77
|
+
// Hack to override behavior introduced by Chrome v71 that unmuted video elements can't auto play
|
|
78
|
+
video.setAttribute('muted', '');
|
|
79
|
+
video.play();
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
_this2.setupDimensionsListener(video, subscriber);
|
|
83
|
+
|
|
84
|
+
subscriber.id = subscriber._otsubscriber.id;
|
|
85
|
+
|
|
86
|
+
return subscriber;
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
TsOpenTokStream.prototype.getVideoElement = function getVideoElement(container) {
|
|
91
|
+
var element = $(container).find('.OT_video-element');
|
|
92
|
+
|
|
93
|
+
return element.length > 0 ? element : $(container).find('.OT_video-container > video');
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
TsOpenTokStream.prototype.destroySubscriber = function destroySubscriber(subscriber) {
|
|
97
|
+
return this._session.destroySubscriber(subscriber);
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
TsOpenTokStream.prototype.getSnapshot = function getSnapshot(tsMediaElement) {
|
|
101
|
+
var _this3 = this;
|
|
102
|
+
|
|
103
|
+
var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
104
|
+
|
|
105
|
+
var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
106
|
+
_ref$format = _ref.format,
|
|
107
|
+
format = _ref$format === undefined ? 'image/png' : _ref$format,
|
|
108
|
+
_ref$quality = _ref.quality,
|
|
109
|
+
quality = _ref$quality === undefined ? 0.92 : _ref$quality,
|
|
110
|
+
x = _ref.x,
|
|
111
|
+
y = _ref.y,
|
|
112
|
+
w = _ref.w,
|
|
113
|
+
h = _ref.h;
|
|
114
|
+
|
|
115
|
+
return new Promise(function (resolve) {
|
|
116
|
+
var otElement = tsMediaElement[tsMediaElement instanceof _publisher.TsMediaPublisher ? '_otpublisher' : '_otsubscriber'];
|
|
117
|
+
var crop = !_.isUndefined(x) && !_.isUndefined(y) && !_.isUndefined(w) && !_.isUndefined(h);
|
|
118
|
+
var resize = !crop && (!_.isUndefined(w) || !_.isUndefined(h));
|
|
119
|
+
|
|
120
|
+
if (!_this3._environment.isIE11() && format.toLowerCase() === 'image/png' && !crop && !resize) {
|
|
121
|
+
return resolve('data:image/png;base64,' + otElement.getImgData());
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
var videoElement = _this3.getVideoElement(otElement.element);
|
|
125
|
+
|
|
126
|
+
if (!_this3._environment.isIE11()) {
|
|
127
|
+
var videoElem = videoElement[0];
|
|
128
|
+
var canvas = document.createElement('canvas');
|
|
129
|
+
var ctx = canvas.getContext('2d');
|
|
130
|
+
|
|
131
|
+
if (crop) {
|
|
132
|
+
canvas.width = w;
|
|
133
|
+
canvas.height = h;
|
|
134
|
+
|
|
135
|
+
ctx.drawImage(videoElem, x, y, w, h, 0, 0, w, h);
|
|
136
|
+
} else if (resize) {
|
|
137
|
+
if (!h) {
|
|
138
|
+
h = w * (videoElem.videoHeight / videoElem.videoWidth);
|
|
139
|
+
} else if (!w) {
|
|
140
|
+
w = h * (videoElem.videoWidth / videoElem.videoHeight);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
canvas.width = w;
|
|
144
|
+
canvas.height = h;
|
|
145
|
+
|
|
146
|
+
ctx.drawImage(videoElem, 0, 0, w, h);
|
|
147
|
+
} else {
|
|
148
|
+
canvas.width = videoElem.videoWidth;
|
|
149
|
+
canvas.height = videoElem.videoHeight;
|
|
150
|
+
|
|
151
|
+
ctx.drawImage(videoElem, 0, 0);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
return resolve(canvas.toDataURL(format, quality));
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
var currentWidth = videoElement.width();
|
|
158
|
+
var currentHeight = videoElement.height();
|
|
159
|
+
var currentPosition = videoElement.position();
|
|
160
|
+
var _videoDimensions = _this3.videoDimensions,
|
|
161
|
+
videoWidth = _videoDimensions.width,
|
|
162
|
+
videoHeight = _videoDimensions.height;
|
|
163
|
+
|
|
164
|
+
var ratio = Math.max(videoWidth / currentWidth, videoHeight / currentHeight);
|
|
165
|
+
|
|
166
|
+
videoElement.width(videoWidth / ratio);
|
|
167
|
+
videoElement.height(videoHeight / ratio);
|
|
168
|
+
|
|
169
|
+
videoElement.css({
|
|
170
|
+
left: currentPosition.left + Math.max(0, (currentWidth - videoWidth / ratio) / 2) + 'px',
|
|
171
|
+
|
|
172
|
+
top: currentPosition.top + Math.max(0, (currentHeight - videoHeight / ratio) / 2) + 'px'
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
setTimeout(function () {
|
|
176
|
+
var pngDataURL = 'data:image/png;base64,' + otElement.getImgData();
|
|
177
|
+
|
|
178
|
+
if (format.toLowerCase() === 'image/png' && !crop && !resize) {
|
|
179
|
+
resolve(pngDataURL);
|
|
180
|
+
} else {
|
|
181
|
+
var img = new Image(),
|
|
182
|
+
_canvas = document.createElement('canvas'),
|
|
183
|
+
_ctx = _canvas.getContext('2d');
|
|
184
|
+
|
|
185
|
+
img.onload = function () {
|
|
186
|
+
if (crop) {
|
|
187
|
+
var widthRatio = img.width / videoWidth;
|
|
188
|
+
var heightRatio = img.height / videoHeight;
|
|
189
|
+
|
|
190
|
+
x = x && x * widthRatio;
|
|
191
|
+
y = y && y * heightRatio;
|
|
192
|
+
w = w && w * widthRatio;
|
|
193
|
+
h = h && h * heightRatio;
|
|
194
|
+
|
|
195
|
+
_canvas.width = w;
|
|
196
|
+
_canvas.height = h;
|
|
197
|
+
|
|
198
|
+
_ctx.drawImage(img, x, y, w, h, 0, 0, w, h);
|
|
199
|
+
} else if (resize) {
|
|
200
|
+
if (!h) {
|
|
201
|
+
h = w * (videoHeight / videoWidth);
|
|
202
|
+
} else if (!w) {
|
|
203
|
+
w = h * (videoWidth / videoHeight);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
_canvas.width = w;
|
|
207
|
+
_canvas.height = h;
|
|
208
|
+
|
|
209
|
+
_ctx.drawImage(img, 0, 0, w, h);
|
|
210
|
+
} else {
|
|
211
|
+
_canvas.width = img.width;
|
|
212
|
+
_canvas.height = img.height;
|
|
213
|
+
|
|
214
|
+
_ctx.drawImage(img);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
return resolve(_canvas.toDataURL(format, quality));
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
img.src = pngDataURL;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
videoElement.width(currentWidth);
|
|
224
|
+
videoElement.height(currentHeight);
|
|
225
|
+
|
|
226
|
+
videoElement.css({
|
|
227
|
+
left: currentPosition.left + 'px',
|
|
228
|
+
top: currentPosition.top + 'px'
|
|
229
|
+
});
|
|
230
|
+
}, timeout * 1000);
|
|
231
|
+
}).then(function (imgData) {
|
|
232
|
+
if (!imgData || imgData.length < 10) {
|
|
233
|
+
return Promise.reject('Failed to get a snapshot');
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
return imgData;
|
|
237
|
+
});
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
TsOpenTokStream.prototype.getStats = function getStats(subscriber) {
|
|
241
|
+
return new Promise(function (resolve, reject) {
|
|
242
|
+
subscriber._otsubscriber.getStats(function (err, stats) {
|
|
243
|
+
if (err) {
|
|
244
|
+
return reject(err);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
return resolve(stats);
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
_createClass(TsOpenTokStream, [{
|
|
253
|
+
key: 'id',
|
|
254
|
+
get: function get() {
|
|
255
|
+
return this._otstream.streamId;
|
|
256
|
+
}
|
|
257
|
+
}, {
|
|
258
|
+
key: 'name',
|
|
259
|
+
get: function get() {
|
|
260
|
+
return this._otstream.name;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* Whether the stream has video. This property can change if the publisher turns on or off video
|
|
265
|
+
* (by calling Publisher.publishVideo()). When this occurs, the Session object dispatches a streamPropertyChanged
|
|
266
|
+
* event (see StreamPropertyChangedEvent).
|
|
267
|
+
*/
|
|
268
|
+
|
|
269
|
+
}, {
|
|
270
|
+
key: 'hasVideo',
|
|
271
|
+
get: function get() {
|
|
272
|
+
return this._otstream.hasVideo;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Whether the stream has audio. This property can change if the publisher turns on or off audio
|
|
277
|
+
* (by calling Publisher.publishAudio()). When this occurs, the Session object dispatches a streamPropertyChanged
|
|
278
|
+
* event (see StreamPropertyChangedEvent).
|
|
279
|
+
*/
|
|
280
|
+
|
|
281
|
+
}, {
|
|
282
|
+
key: 'hasAudio',
|
|
283
|
+
get: function get() {
|
|
284
|
+
return this._otstream.hasAudio;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Indicates if video channel exists in the stream.
|
|
289
|
+
*/
|
|
290
|
+
|
|
291
|
+
}, {
|
|
292
|
+
key: 'videoChannelExists',
|
|
293
|
+
get: function get() {
|
|
294
|
+
return this._videoChannelExists;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Indicates if audio channel exists in the stream.
|
|
299
|
+
*/
|
|
300
|
+
|
|
301
|
+
}, {
|
|
302
|
+
key: 'audioChannelExists',
|
|
303
|
+
get: function get() {
|
|
304
|
+
return this._audioChannelExists;
|
|
305
|
+
}
|
|
306
|
+
}]);
|
|
307
|
+
|
|
308
|
+
return TsOpenTokStream;
|
|
309
|
+
}(_stream.TsMediaStream);
|
|
310
|
+
//# sourceMappingURL=stream.js.map
|