@techsee/techsee-media-service 999.0.2-switch → 999.0.3-alpha2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/LocalStreamManager.d.ts +12 -0
- package/lib/LocalStreamManager.d.ts.map +1 -1
- package/lib/LocalStreamManager.js +440 -283
- package/lib/LocalStreamManager.js.map +1 -1
- package/lib/MediaConstants.d.ts +14 -4
- package/lib/MediaConstants.d.ts.map +1 -1
- package/lib/MediaConstants.js +83 -38
- package/lib/MediaConstants.js.map +1 -1
- package/lib/MediaContracts.d.ts +17 -14
- package/lib/MediaContracts.d.ts.map +1 -1
- package/lib/MediaContracts.js +3 -3
- package/lib/MediaContracts.js.map +1 -1
- package/lib/MediaPublisher.d.ts +3 -3
- package/lib/MediaPublisher.d.ts.map +1 -1
- package/lib/MediaPublisher.js +46 -35
- package/lib/MediaPublisher.js.map +1 -1
- package/lib/MediaServiceBase.d.ts +21 -7
- package/lib/MediaServiceBase.d.ts.map +1 -1
- package/lib/MediaServiceBase.js +924 -586
- package/lib/MediaServiceBase.js.map +1 -1
- package/lib/MediaSession/MediaServer.d.ts +45 -0
- package/lib/MediaSession/MediaServer.d.ts.map +1 -0
- package/lib/MediaSession/MediaServer.js +538 -0
- package/lib/MediaSession/MediaServer.js.map +1 -0
- package/lib/MediaSession/MediaSessionBase.d.ts +10 -1
- package/lib/MediaSession/MediaSessionBase.d.ts.map +1 -1
- package/lib/MediaSession/MediaSessionBase.js +128 -66
- package/lib/MediaSession/MediaSessionBase.js.map +1 -1
- package/lib/MediaSession/SessionOpentok.d.ts +11 -9
- package/lib/MediaSession/SessionOpentok.d.ts.map +1 -1
- package/lib/MediaSession/SessionOpentok.js +500 -352
- package/lib/MediaSession/SessionOpentok.js.map +1 -1
- package/lib/MediaSession/SessionTurn.d.ts +4 -1
- package/lib/MediaSession/SessionTurn.d.ts.map +1 -1
- package/lib/MediaSession/SessionTurn.js +611 -422
- package/lib/MediaSession/SessionTurn.js.map +1 -1
- package/lib/MediaSession/TurnConstants.js +31 -30
- package/lib/MediaSession/TurnConstants.js.map +1 -1
- package/lib/MediaSubscriber.d.ts +11 -11
- package/lib/MediaSubscriber.d.ts.map +1 -1
- package/lib/MediaSubscriber.js +236 -192
- package/lib/MediaSubscriber.js.map +1 -1
- package/lib/MediaUtils/Compatibility.d.ts +2 -1
- package/lib/MediaUtils/Compatibility.d.ts.map +1 -1
- package/lib/MediaUtils/Compatibility.js +130 -85
- package/lib/MediaUtils/Compatibility.js.map +1 -1
- package/lib/MediaUtils/MediaDomUtils.d.ts +3 -2
- package/lib/MediaUtils/MediaDomUtils.d.ts.map +1 -1
- package/lib/MediaUtils/MediaDomUtils.js +235 -174
- package/lib/MediaUtils/MediaDomUtils.js.map +1 -1
- package/lib/MediaUtils/MediaTracer.js +9 -4
- package/lib/MediaUtils/MediaTracer.js.map +1 -1
- package/lib/MediaUtils/index.d.ts +1 -0
- package/lib/MediaUtils/index.d.ts.map +1 -0
- package/lib/MediaUtils/index.js +16 -0
- package/lib/MediaUtils/index.js.map +1 -0
- package/lib/MultiParty/Contracts.d.ts +16 -0
- package/lib/MultiParty/Contracts.d.ts.map +1 -0
- package/lib/MultiParty/Contracts.js +6 -0
- package/lib/MultiParty/Contracts.js.map +1 -0
- package/lib/MultiParty/DetectWebRtcService.d.ts +16 -0
- package/lib/MultiParty/DetectWebRtcService.d.ts.map +1 -0
- package/lib/MultiParty/DetectWebRtcService.js +79 -0
- package/lib/MultiParty/DetectWebRtcService.js.map +1 -0
- package/lib/MultiParty/MediaCapabilitiesService.d.ts +23 -0
- package/lib/MultiParty/MediaCapabilitiesService.d.ts.map +1 -0
- package/lib/MultiParty/MediaCapabilitiesService.js +369 -0
- package/lib/MultiParty/MediaCapabilitiesService.js.map +1 -0
- package/lib/MultiParty/MediaCapabilitiesUtils.d.ts +5 -0
- package/lib/MultiParty/MediaCapabilitiesUtils.d.ts.map +1 -0
- package/lib/MultiParty/MediaCapabilitiesUtils.js +305 -0
- package/lib/MultiParty/MediaCapabilitiesUtils.js.map +1 -0
- package/lib/MultiParty/MultiPartyService.d.ts +40 -0
- package/lib/MultiParty/MultiPartyService.d.ts.map +1 -0
- package/lib/MultiParty/MultiPartyService.js +70 -0
- package/lib/MultiParty/MultiPartyService.js.map +1 -0
- package/lib/MultiParty/MultiPartyServiceFactory.d.ts +3 -0
- package/lib/MultiParty/MultiPartyServiceFactory.d.ts.map +1 -0
- package/lib/MultiParty/MultiPartyServiceFactory.js +21 -0
- package/lib/MultiParty/MultiPartyServiceFactory.js.map +1 -0
- package/lib/MultiParty/OpentokMultiPartyService.d.ts +29 -0
- package/lib/MultiParty/OpentokMultiPartyService.d.ts.map +1 -0
- package/lib/MultiParty/OpentokMultiPartyService.js +888 -0
- package/lib/MultiParty/OpentokMultiPartyService.js.map +1 -0
- package/lib/MultiParty/VideoLayoutType.d.ts +4 -0
- package/lib/MultiParty/VideoLayoutType.d.ts.map +1 -0
- package/lib/MultiParty/VideoLayoutType.js +13 -0
- package/lib/MultiParty/VideoLayoutType.js.map +1 -0
- package/lib/MultiParty/index.d.ts +4 -0
- package/lib/MultiParty/index.d.ts.map +1 -0
- package/lib/MultiParty/index.js +61 -0
- package/lib/MultiParty/index.js.map +1 -0
- package/lib/MultiParty/opentok.d.ts +503 -0
- package/lib/TechseeMediaStream.d.ts +6 -6
- package/lib/TechseeMediaStream.d.ts.map +1 -1
- package/lib/TechseeMediaStream.js +59 -53
- package/lib/TechseeMediaStream.js.map +1 -1
- package/lib/oldCode/constants.js +20 -15
- package/lib/oldCode/constants.js.map +1 -1
- package/lib/oldCode/event-emitter.js +45 -22
- package/lib/oldCode/event-emitter.js.map +1 -1
- package/lib/oldCode/index.js +48 -52
- package/lib/oldCode/index.js.map +1 -1
- package/lib/oldCode/opentok/session.js +261 -236
- package/lib/oldCode/opentok/session.js.map +1 -1
- package/lib/oldCode/opentok/stream.js +283 -269
- package/lib/oldCode/opentok/stream.js.map +1 -1
- package/lib/oldCode/publisher.js +96 -71
- package/lib/oldCode/publisher.js.map +1 -1
- package/lib/oldCode/service.js +294 -272
- package/lib/oldCode/service.js.map +1 -1
- package/lib/oldCode/session.js +82 -60
- package/lib/oldCode/session.js.map +1 -1
- package/lib/oldCode/stream.js +153 -125
- package/lib/oldCode/stream.js.map +1 -1
- package/lib/oldCode/subscriber.js +60 -35
- package/lib/oldCode/subscriber.js.map +1 -1
- package/lib/oldCode/tracer.d.ts +3 -2
- package/lib/oldCode/tracer.d.ts.map +1 -1
- package/lib/oldCode/tracer.js +181 -130
- package/lib/oldCode/tracer.js.map +1 -1
- package/lib/oldCode/utils/ImageFixer.js +67 -44
- package/lib/oldCode/utils/ImageFixer.js.map +1 -1
- package/lib/oldCode/webrtc/constants.js +102 -110
- package/lib/oldCode/webrtc/constants.js.map +1 -1
- package/lib/oldCode/webrtc/helper.js +176 -124
- package/lib/oldCode/webrtc/helper.js.map +1 -1
- package/lib/oldCode/webrtc/session-kms.js +408 -393
- package/lib/oldCode/webrtc/session-kms.js.map +1 -1
- package/lib/oldCode/webrtc/session-loopback.js +245 -227
- package/lib/oldCode/webrtc/session-loopback.js.map +1 -1
- package/lib/oldCode/webrtc/session-turn.js +705 -658
- package/lib/oldCode/webrtc/session-turn.js.map +1 -1
- package/lib/oldCode/webrtc/session-turn.v2.js +480 -471
- package/lib/oldCode/webrtc/session-turn.v2.js.map +1 -1
- package/lib/oldCode/webrtc/session.js +12 -6
- package/lib/oldCode/webrtc/session.js.map +1 -1
- package/lib/oldCode/webrtc/stream.js +526 -504
- package/lib/oldCode/webrtc/stream.js.map +1 -1
- package/lib/oldCode/webrtc/temasys/adapter-loader.js +5 -6
- package/lib/oldCode/webrtc/temasys/adapter-loader.js.map +1 -1
- package/lib/oldCode/webrtc/temasys/adapter.js +5264 -5192
- package/lib/oldCode/webrtc/temasys/adapter.js.map +1 -1
- package/lib/oldCode/webrtc/webrtc-ie-shim.js +3357 -2927
- package/lib/oldCode/webrtc/webrtc-ie-shim.js.map +1 -1
- package/lib/qos/raw-qos.js +348 -273
- package/lib/qos/raw-qos.js.map +1 -1
- package/lib/webrtc-ie-shim.js +3386 -2985
- package/lib/webrtc-ie-shim.js.map +1 -1
- package/package.json +54 -42
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["oldCode/webrtc/session-kms.js"],"names":["io","isIE11","TsEnvironmentDetect","require","WebRtcPeer","KMSWebRTCSession","credentials","isMobile","resolution","deviceOpts","_credentials","_isMobile","_resolution","_deviceOpts","iceServers","ice","map","item","urls","url","username","login","credential","password","_configuration","iceTransportPolicy","_socket","_pc","_connectSocket","Promise","resolve","reject","socket","connect","forceNew","done","_","once","err","on","SOCKET_EVENTS","INCOMING","ERROR","_setupConnection","pc","sessionId","uid","Cookies","get","COOKIES","UID","clientType","CLIENT_TYPES","PUBLISHER","SUBSCRIBER","PIPELINE_DESTROYED","destroyed","off","disconnect","emit","EVENTS","DISCONNECTED","reason","generateOffer","error","offer","OUTGOING","JOIN_PIPELINE","pipelineType","sdpOffer","_getPeerType","constraints","audio","PEER_CONNECTION_TYPES","SEND_RECV","RECV_ONLY","_connectRTCPeer","configuration","peerConnectionType","mediaConstraints","onicecandidate","candidate","ICE_CANDIDATE","JOIN_RESPONSE","sdpAnswer","set","processAnswer","CONNECTED","addIceCandidate","then","catch","_setTrackStateTo","state","track","setEnabled","enabled","video","peerConnection","getLocalStreams","forEach","stream","getTracks","onaddstream","tsStream","TsWebRTCStream","STREAM_CREATED","close","DESTROY_PIPELINE","event","createPublisher","target","params","mediaStream","tracks","reduce","result","filter","kind","videoDevice","audioDevice","push","tsstream","name","remote","publisher","TsMediaPublisher","videoParams","videoHeight","videoDimensions","height","videoWidth","width","_target","publish","PUBLISHER_EVENTS","STREAM_PROPERTY_CHANGED","property","value","hasVideo","hasAudio","document","createElement","src","URL","createObjectURL","_mediaStream","playsInline","autoplay","appendChild","_element","attachMediaStream","assign","fitMode","insertMode","mirror","elementHeight","elementWidth","style","position","setupDimensionsListener","destroyPublisher","remove","DESTROYED","PIPELINE_TYPES","AUDIO_VIDEO_TO_SUBSCRIBERS","TsMediaSession"],"mappings":"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","file":"session-kms.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 TsWebRTCStream\n} from './stream';\n\nimport * as io from 'socket.io-client';\n\nimport Cookies from 'js-cookie';\n\nimport {TsEnvironmentDetect} from '@techsee/techsee-common/lib/helpers/ts-environment-detect';\n\nconst isIE11 = (new TsEnvironmentDetect()).isIE11();\n\nconst {WebRtcPeer} = require('kurento-utils');\n\nimport {\n CLIENT_TYPES,\n COOKIES,\n PEER_CONNECTION_TYPES,\n PIPELINE_TYPES,\n SOCKET_EVENTS\n} from './constants';\n\nimport {\n getMediaConstraints\n} from './helper';\n\n\n/**\n * WebRTC-specific implementation of TsMediaSession.\n *\n * Instance of this class is returned by TsMediaService.initSession call\n * with 'MEDIA_SERVER' as desired mediaType.\n *\n * @class\n * @extends TsMediaSession\n *\n * @see TsMediaSession\n */\nexport class KMSWebRTCSession extends TsMediaSession {\n constructor({credentials, isMobile, resolution, deviceOpts}) {\n super();\n\n this._credentials = credentials;\n this._isMobile = isMobile;\n this._resolution = resolution;\n this._deviceOpts = deviceOpts;\n\n const iceServers = credentials.ice.map((item) => ({\n urls: item.url,\n username: item.login,\n credential: item.password\n }));\n\n this._configuration = {\n iceServers,\n\n iceTransportPolicy: 'relay'\n };\n\n /**\n * Socket.io connection to the signaling server\n *\n * @private\n * @member { Object }\n */\n this._socket = null;\n\n /**\n * RTCPeerConnection to the media server.\n *\n * For now kurento-utils is used for connection establishment.\n *\n * @private\n * @member { Object }\n */\n this._pc = null;\n }\n\n /**\n * Id of the session.\n *\n * @member { String }\n *\n * @type { String }\n */\n get id() {\n return this._credentials.sessionId;\n }\n\n /**\n * PipelineType of the session.\n *\n * @member { String }\n *\n * @type { String }\n */\n get pipelineType() {\n return this._credentials.pipelineType || PIPELINE_TYPES.AUDIO_VIDEO_TO_SUBSCRIBERS;\n }\n\n _connectSocket(url) {\n return new Promise((resolve, reject) => {\n const socket = io.connect(url, {forceNew: true});\n\n const done = _.once((err) => {\n err ? reject(err) : resolve();\n });\n\n //\n // When connection is established\n //\n socket.once('connect', () => done());\n //\n // errorOccured is ts-media-client signal\n //\n socket.on(SOCKET_EVENTS.INCOMING.ERROR, done);\n //\n // And these 2 are socket.io connection failed events\n //\n socket.on('connect_error', done);\n socket.on('connect_timeout', done);\n\n this._socket = socket;\n });\n }\n\n _setupConnection(pc, sessionId) {\n const uid = Cookies.get(COOKIES.UID);\n const clientType = this._isMobile ? CLIENT_TYPES.PUBLISHER : CLIENT_TYPES.SUBSCRIBER;\n\n return new Promise((resolve, reject) => {\n this._socket.on(SOCKET_EVENTS.INCOMING.PIPELINE_DESTROYED, () => {\n this.destroyed = true;\n\n this._socket.off();\n this._socket.disconnect();\n\n this.emit(EVENTS.DISCONNECTED, {\n reason: 'Client disconnected'\n });\n });\n\n pc.generateOffer((error, offer) => {\n if (error) {\n return reject(error);\n }\n\n this._socket.emit(SOCKET_EVENTS.OUTGOING.JOIN_PIPELINE, {\n uid,\n sessionId,\n clientType,\n\n pipelineType: this.pipelineType,\n sdpOffer: offer\n });\n\n resolve();\n });\n });\n }\n\n _getPeerType(constraints, isMobile) {\n if (isMobile || constraints.audio) {\n return PEER_CONNECTION_TYPES.SEND_RECV;\n }\n\n return PEER_CONNECTION_TYPES.RECV_ONLY;\n }\n\n _connectRTCPeer({\n constraints,\n configuration,\n sessionId,\n isMobile\n }) {\n return new Promise((resolve, reject) => {\n const done = _.once((err) => {\n err ? reject(err) : resolve();\n });\n const peerConnectionType = this._getPeerType(constraints, isMobile);\n\n const pc = WebRtcPeer[peerConnectionType]({\n configuration,\n\n mediaConstraints: constraints,\n onicecandidate: (candidate) => {\n this._socket.emit(SOCKET_EVENTS.OUTGOING.ICE_CANDIDATE, {\n sessionId,\n\n candidate,\n clientType: isMobile ? CLIENT_TYPES.PUBLISHER : CLIENT_TYPES.SUBSCRIBER\n });\n }\n }, (error) => {\n if (error) {\n return done(error);\n }\n\n this._socket.on(SOCKET_EVENTS.INCOMING.JOIN_RESPONSE, ({sdpAnswer, uid}) => {\n Cookies.set(COOKIES.UID, uid);\n\n pc.processAnswer(sdpAnswer, (error) => {\n if (error) {\n return done(error);\n }\n });\n\n this.emit(EVENTS.CONNECTED);\n\n this._socket.off(SOCKET_EVENTS.INCOMING.ERROR);\n this._socket.off('connect_error');\n this._socket.off('connect_timeout');\n\n return done();\n });\n\n this._socket.on(SOCKET_EVENTS.INCOMING.ICE_CANDIDATE, ({candidate}) => {\n pc.addIceCandidate(candidate);\n });\n\n this._setupConnection(pc, sessionId)\n .then(done)\n .catch(done);\n });\n\n this._pc = pc;\n });\n }\n\n _setTrackStateTo(state) {\n return function (track) {\n if (track.setEnabled) {\n track.setEnabled(state);\n } else {\n track.enabled = state;\n }\n };\n }\n\n /**\n * Establish socket and peer connection to the media server.\n *\n * @method\n * @returns { Promise }\n *\n * @fires SESSION_EVENTS#CONNECTED\n */\n connect() {\n return this._connectSocket(this._credentials.url)\n .then(() => (\n getMediaConstraints({\n resolution: this._resolution,\n deviceOpts: this._deviceOpts\n })\n ))\n .then((constraints) => {\n // streaming from dashboard is not supported and we\n // don't want to access the camera without a reason\n if (!this._isMobile && constraints.video) {\n delete constraints.video;\n }\n\n return this._connectRTCPeer({\n constraints,\n\n configuration: this._configuration,\n sessionId: this._credentials.sessionId,\n isMobile: this._isMobile\n });\n })\n .then(() => {\n this._pc.peerConnection.getLocalStreams().forEach((stream) => {\n stream.getTracks().forEach(this._setTrackStateTo(false));\n });\n\n this._pc.peerConnection.onaddstream = ({stream}) => {\n const tsStream = new TsWebRTCStream(this, stream);\n\n this.emit(EVENTS.STREAM_CREATED, tsStream);\n };\n });\n }\n\n /**\n * Close all media streams, disconnect RTCPeerConnection and socket.io\n *\n * @method\n * @returns { Promise }\n *\n * @fires SESSION_EVENTS#DISCONNECTED\n */\n disconnect() {\n return Promise.resolve()\n .then(() => {\n if (this.destroyed) {\n return null;\n }\n\n this._pc.peerConnection.close();\n\n this._socket.emit(SOCKET_EVENTS.OUTGOING.DESTROY_PIPELINE, {\n sessionId: this._credentials.sessionId\n });\n this._socket.disconnect();\n\n const event = {reason: 'disconnected'};\n\n this.emit(EVENTS.DISCONNECTED, event);\n\n return event;\n });\n }\n\n /**\n * Create new TsMediaPublisher instance\n *\n * @method\n *\n * @param { DOMElement } [target] Video element\n * that will be used to render publishing video stream\n * @param { Object } params\n * @param { String } [params.videoDevice] Video device id\n * @param { String } [params.videoParams] Video device id\n * @param { String } [params.videoParams.fitMode] Video fit mode\n * @param { Number|String } [params.videoParams.width] Video element width\n * @param { Number|String } [params.videoParams.height] Video element height\n * @param { String } [params.audioDevice] Video device id\n *\n * @returns { Promise<TsMediaPublisher> } publisher\n *\n * @see TsMediaPublisher\n */\n createPublisher(target, params) {\n if (!params) {\n params = target;\n target = null;\n }\n\n return Promise.resolve()\n .then(() => {\n //\n // Get media streams that were created on session initialization\n //\n const mediaStream = this._pc.peerConnection.getLocalStreams()[0];\n //\n // Get tracks that are related to the publisher (audio or video)\n //\n const tracks = this._pc.peerConnection.getLocalStreams().reduce((result, mediaStream) => {\n mediaStream.getTracks()\n .filter((track) => (track.kind === 'video' && params.videoDevice) ||\n (track.kind === 'audio' && params.audioDevice))\n .forEach((track) => result.push(track));\n\n return result;\n }, []);\n\n const tsstream = new TsWebRTCStream(this, mediaStream, params.name);\n\n tsstream.remote = false;\n\n const publisher = new TsMediaPublisher(this, {\n stream: tsstream,\n tracks,\n videoParams: params.videoParams,\n\n videoHeight: tsstream.videoDimensions.height,\n videoWidth: tsstream.videoDimensions.width,\n\n _target: target\n });\n\n tsstream.publisher = publisher;\n\n return publisher;\n });\n }\n\n /**\n * Publish stream from previously create TsMediaPublisher instance.\n *\n * Used internally by TsMediaPublisher.publish\n *\n * @method\n *\n * @param { TsMediaPublisher } publisher\n *\n * @returns { Promise }\n *\n * @fires PUBLISHER_EVENTS#STREAM_CREATED\n * @fires SESSION_EVENTS#STREAM_PROPERTY_CHANGED\n * @fires STREAM_EVENTS#PROPERTY_CHANGED\n *\n * @see TsMediaPublisher#publish\n */\n publish(publisher) {\n return Promise.resolve()\n .then(() => {\n publisher.emit(PUBLISHER_EVENTS.STREAM_CREATED, publisher.stream);\n this.emit(EVENTS.STREAM_PROPERTY_CHANGED, {\n stream: publisher.stream,\n property: 'hasVideo',\n value: publisher.stream.hasVideo\n });\n this.emit(EVENTS.STREAM_PROPERTY_CHANGED, {\n stream: publisher.stream,\n property: 'hasAudio',\n value: publisher.stream.hasAudio\n });\n\n if (publisher._target) {\n //\n // New video element where publishing video stream will be rendered\n //\n const video = document.createElement('video');\n\n if (!isIE11) {\n video.src = URL.createObjectURL(publisher.stream._mediaStream);\n }\n\n video.playsInline = true;\n video.autoplay = true;\n\n if (isIE11) {\n publisher._target.appendChild(video);\n publisher._element = attachMediaStream(video, publisher.stream._mediaStream);\n }\n\n const params = _.assign({}, {\n fitMode: 'contain',\n insertMode: 'append',\n mirror: false,\n resolution: '480x640',\n width: '100%',\n height: '100%'\n }, publisher.videoParams);\n\n const elementHeight = (typeof params.height === 'string') ? params.height : params.height + 'px';\n const elementWidth = (typeof params.width === 'string') ? params.width : params.width + 'px';\n\n _.assign((isIE11 ? publisher._element : video).style, {\n height: elementHeight,\n width: elementWidth,\n\n position: 'relative',\n 'object-fit': params.fitMode\n });\n\n if (!isIE11) {\n publisher._target.appendChild(video);\n publisher._element = video;\n }\n\n publisher.stream.setupDimensionsListener(video);\n }\n\n //\n // Enable (unpause) all media tracks related to publisher.\n // They are sending data to the server from this moment.\n //\n publisher.tracks.forEach(this._setTrackStateTo(true));\n });\n }\n\n /**\n * Unpublish stream and destroy publisher's view.\n *\n * Used internally by TsMediaPublisher.destroy\n *\n * @method\n *\n * @param { TsMediaPublisher } publisher\n *\n * @returns { Promise }\n *\n * @fires PUBLISHER_EVENTS#DESTROYED\n *\n * @see TsMediaPublisher#destroy\n */\n destroyPublisher(publisher) {\n return new Promise((resolve) => {\n publisher.tracks.forEach(this._setTrackStateTo(false));\n\n if (publisher._element) {\n publisher._element.remove();\n }\n\n publisher.emit(PUBLISHER_EVENTS.DESTROYED);\n\n return resolve();\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["oldCode/webrtc/session-kms.js"],"names":["isIE11","TsEnvironmentDetect","require","WebRtcPeer","KMSWebRTCSession","credentials","isMobile","resolution","deviceOpts","_credentials","_isMobile","_resolution","_deviceOpts","iceServers","ice","map","item","urls","url","username","login","credential","password","_configuration","iceTransportPolicy","_socket","_pc","sessionId","pipelineType","PIPELINE_TYPES","AUDIO_VIDEO_TO_SUBSCRIBERS","Promise","resolve","reject","socket","io","connect","forceNew","done","_","once","err","on","SOCKET_EVENTS","INCOMING","ERROR","pc","uid","Cookies","get","COOKIES","UID","clientType","CLIENT_TYPES","PUBLISHER","SUBSCRIBER","PIPELINE_DESTROYED","destroyed","off","disconnect","emit","EVENTS","DISCONNECTED","reason","generateOffer","error","offer","OUTGOING","JOIN_PIPELINE","sdpOffer","constraints","audio","PEER_CONNECTION_TYPES","SEND_RECV","RECV_ONLY","configuration","peerConnectionType","_getPeerType","mediaConstraints","onicecandidate","candidate","ICE_CANDIDATE","JOIN_RESPONSE","sdpAnswer","set","processAnswer","CONNECTED","addIceCandidate","_setupConnection","then","state","track","setEnabled","enabled","_connectSocket","video","_connectRTCPeer","peerConnection","getLocalStreams","forEach","stream","getTracks","_setTrackStateTo","onaddstream","tsStream","TsWebRTCStream","STREAM_CREATED","close","DESTROY_PIPELINE","event","target","params","mediaStream","tracks","reduce","result","filter","kind","videoDevice","audioDevice","push","tsstream","name","remote","publisher","TsMediaPublisher","videoParams","videoHeight","videoDimensions","height","videoWidth","width","_target","PUBLISHER_EVENTS","STREAM_PROPERTY_CHANGED","property","value","hasVideo","hasAudio","document","createElement","src","URL","createObjectURL","_mediaStream","playsInline","autoplay","appendChild","_element","attachMediaStream","assign","fitMode","insertMode","mirror","elementHeight","elementWidth","style","position","setupDimensionsListener","remove","DESTROYED","TsMediaSession"],"mappings":"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","sourcesContent":["import {\n EVENTS,\n TsMediaSession\n} from '../session';\n\nimport {\n EVENTS as PUBLISHER_EVENTS,\n TsMediaPublisher\n} from '../publisher';\n\nimport {\n TsWebRTCStream\n} from './stream';\n\nimport * as io from 'socket.io-client';\n\nimport Cookies from 'js-cookie';\n\nimport {TsEnvironmentDetect} from '@techsee/techsee-common/lib/helpers/ts-environment-detect';\n\nconst isIE11 = (new TsEnvironmentDetect()).isIE11();\n\nconst {WebRtcPeer} = require('kurento-utils');\n\nimport {\n CLIENT_TYPES,\n COOKIES,\n PEER_CONNECTION_TYPES,\n PIPELINE_TYPES,\n SOCKET_EVENTS\n} from './constants';\n\nimport {\n getMediaConstraints\n} from './helper';\n\n\n/**\n * WebRTC-specific implementation of TsMediaSession.\n *\n * Instance of this class is returned by TsMediaService.initSession call\n * with 'MEDIA_SERVER' as desired mediaType.\n *\n * @class\n * @extends TsMediaSession\n *\n * @see TsMediaSession\n */\nexport class KMSWebRTCSession extends TsMediaSession {\n constructor({credentials, isMobile, resolution, deviceOpts}) {\n super();\n\n this._credentials = credentials;\n this._isMobile = isMobile;\n this._resolution = resolution;\n this._deviceOpts = deviceOpts;\n\n const iceServers = credentials.ice.map((item) => ({\n urls: item.url,\n username: item.login,\n credential: item.password\n }));\n\n this._configuration = {\n iceServers,\n\n iceTransportPolicy: 'relay'\n };\n\n /**\n * Socket.io connection to the signaling server\n *\n * @private\n * @member { Object }\n */\n this._socket = null;\n\n /**\n * RTCPeerConnection to the media server.\n *\n * For now kurento-utils is used for connection establishment.\n *\n * @private\n * @member { Object }\n */\n this._pc = null;\n }\n\n /**\n * Id of the session.\n *\n * @member { String }\n *\n * @type { String }\n */\n get id() {\n return this._credentials.sessionId;\n }\n\n /**\n * PipelineType of the session.\n *\n * @member { String }\n *\n * @type { String }\n */\n get pipelineType() {\n return this._credentials.pipelineType || PIPELINE_TYPES.AUDIO_VIDEO_TO_SUBSCRIBERS;\n }\n\n _connectSocket(url) {\n return new Promise((resolve, reject) => {\n const socket = io.connect(url, {forceNew: true});\n\n const done = _.once((err) => {\n err ? reject(err) : resolve();\n });\n\n //\n // When connection is established\n //\n socket.once('connect', () => done());\n //\n // errorOccured is ts-media-client signal\n //\n socket.on(SOCKET_EVENTS.INCOMING.ERROR, done);\n //\n // And these 2 are socket.io connection failed events\n //\n socket.on('connect_error', done);\n socket.on('connect_timeout', done);\n\n this._socket = socket;\n });\n }\n\n _setupConnection(pc, sessionId) {\n const uid = Cookies.get(COOKIES.UID);\n const clientType = this._isMobile ? CLIENT_TYPES.PUBLISHER : CLIENT_TYPES.SUBSCRIBER;\n\n return new Promise((resolve, reject) => {\n this._socket.on(SOCKET_EVENTS.INCOMING.PIPELINE_DESTROYED, () => {\n this.destroyed = true;\n\n this._socket.off();\n this._socket.disconnect();\n\n this.emit(EVENTS.DISCONNECTED, {\n reason: 'Client disconnected'\n });\n });\n\n pc.generateOffer((error, offer) => {\n if (error) {\n return reject(error);\n }\n\n this._socket.emit(SOCKET_EVENTS.OUTGOING.JOIN_PIPELINE, {\n uid,\n sessionId,\n clientType,\n\n pipelineType: this.pipelineType,\n sdpOffer: offer\n });\n\n resolve();\n });\n });\n }\n\n _getPeerType(constraints, isMobile) {\n if (isMobile || constraints.audio) {\n return PEER_CONNECTION_TYPES.SEND_RECV;\n }\n\n return PEER_CONNECTION_TYPES.RECV_ONLY;\n }\n\n _connectRTCPeer({\n constraints,\n configuration,\n sessionId,\n isMobile\n }) {\n return new Promise((resolve, reject) => {\n const done = _.once((err) => {\n err ? reject(err) : resolve();\n });\n const peerConnectionType = this._getPeerType(constraints, isMobile);\n\n const pc = WebRtcPeer[peerConnectionType]({\n configuration,\n\n mediaConstraints: constraints,\n onicecandidate: (candidate) => {\n this._socket.emit(SOCKET_EVENTS.OUTGOING.ICE_CANDIDATE, {\n sessionId,\n\n candidate,\n clientType: isMobile ? CLIENT_TYPES.PUBLISHER : CLIENT_TYPES.SUBSCRIBER\n });\n }\n }, (error) => {\n if (error) {\n return done(error);\n }\n\n this._socket.on(SOCKET_EVENTS.INCOMING.JOIN_RESPONSE, ({sdpAnswer, uid}) => {\n Cookies.set(COOKIES.UID, uid);\n\n pc.processAnswer(sdpAnswer, (error) => {\n if (error) {\n return done(error);\n }\n });\n\n this.emit(EVENTS.CONNECTED);\n\n this._socket.off(SOCKET_EVENTS.INCOMING.ERROR);\n this._socket.off('connect_error');\n this._socket.off('connect_timeout');\n\n return done();\n });\n\n this._socket.on(SOCKET_EVENTS.INCOMING.ICE_CANDIDATE, ({candidate}) => {\n pc.addIceCandidate(candidate);\n });\n\n this._setupConnection(pc, sessionId)\n .then(done)\n .catch(done);\n });\n\n this._pc = pc;\n });\n }\n\n _setTrackStateTo(state) {\n return function (track) {\n if (track.setEnabled) {\n track.setEnabled(state);\n } else {\n track.enabled = state;\n }\n };\n }\n\n /**\n * Establish socket and peer connection to the media server.\n *\n * @method\n * @returns { Promise }\n *\n * @fires SESSION_EVENTS#CONNECTED\n */\n connect() {\n return this._connectSocket(this._credentials.url)\n .then(() => (\n getMediaConstraints({\n resolution: this._resolution,\n deviceOpts: this._deviceOpts\n })\n ))\n .then((constraints) => {\n // streaming from dashboard is not supported and we\n // don't want to access the camera without a reason\n if (!this._isMobile && constraints.video) {\n delete constraints.video;\n }\n\n return this._connectRTCPeer({\n constraints,\n\n configuration: this._configuration,\n sessionId: this._credentials.sessionId,\n isMobile: this._isMobile\n });\n })\n .then(() => {\n this._pc.peerConnection.getLocalStreams().forEach((stream) => {\n stream.getTracks().forEach(this._setTrackStateTo(false));\n });\n\n this._pc.peerConnection.onaddstream = ({stream}) => {\n const tsStream = new TsWebRTCStream(this, stream);\n\n this.emit(EVENTS.STREAM_CREATED, tsStream);\n };\n });\n }\n\n /**\n * Close all media streams, disconnect RTCPeerConnection and socket.io\n *\n * @method\n * @returns { Promise }\n *\n * @fires SESSION_EVENTS#DISCONNECTED\n */\n disconnect() {\n return Promise.resolve()\n .then(() => {\n if (this.destroyed) {\n return null;\n }\n\n this._pc.peerConnection.close();\n\n this._socket.emit(SOCKET_EVENTS.OUTGOING.DESTROY_PIPELINE, {\n sessionId: this._credentials.sessionId\n });\n this._socket.disconnect();\n\n const event = {reason: 'disconnected'};\n\n this.emit(EVENTS.DISCONNECTED, event);\n\n return event;\n });\n }\n\n /**\n * Create new TsMediaPublisher instance\n *\n * @method\n *\n * @param { DOMElement } [target] Video element\n * that will be used to render publishing video stream\n * @param { Object } params\n * @param { String } [params.videoDevice] Video device id\n * @param { String } [params.videoParams] Video device id\n * @param { String } [params.videoParams.fitMode] Video fit mode\n * @param { Number|String } [params.videoParams.width] Video element width\n * @param { Number|String } [params.videoParams.height] Video element height\n * @param { String } [params.audioDevice] Video device id\n *\n * @returns { Promise<TsMediaPublisher> } publisher\n *\n * @see TsMediaPublisher\n */\n createPublisher(target, params) {\n if (!params) {\n params = target;\n target = null;\n }\n\n return Promise.resolve()\n .then(() => {\n //\n // Get media streams that were created on session initialization\n //\n const mediaStream = this._pc.peerConnection.getLocalStreams()[0];\n //\n // Get tracks that are related to the publisher (audio or video)\n //\n const tracks = this._pc.peerConnection.getLocalStreams().reduce((result, mediaStream) => {\n mediaStream.getTracks()\n .filter((track) => (track.kind === 'video' && params.videoDevice) ||\n (track.kind === 'audio' && params.audioDevice))\n .forEach((track) => result.push(track));\n\n return result;\n }, []);\n\n const tsstream = new TsWebRTCStream(this, mediaStream, params.name);\n\n tsstream.remote = false;\n\n const publisher = new TsMediaPublisher(this, {\n stream: tsstream,\n tracks,\n videoParams: params.videoParams,\n\n videoHeight: tsstream.videoDimensions.height,\n videoWidth: tsstream.videoDimensions.width,\n\n _target: target\n });\n\n tsstream.publisher = publisher;\n\n return publisher;\n });\n }\n\n /**\n * Publish stream from previously create TsMediaPublisher instance.\n *\n * Used internally by TsMediaPublisher.publish\n *\n * @method\n *\n * @param { TsMediaPublisher } publisher\n *\n * @returns { Promise }\n *\n * @fires PUBLISHER_EVENTS#STREAM_CREATED\n * @fires SESSION_EVENTS#STREAM_PROPERTY_CHANGED\n * @fires STREAM_EVENTS#PROPERTY_CHANGED\n *\n * @see TsMediaPublisher#publish\n */\n publish(publisher) {\n return Promise.resolve()\n .then(() => {\n publisher.emit(PUBLISHER_EVENTS.STREAM_CREATED, publisher.stream);\n this.emit(EVENTS.STREAM_PROPERTY_CHANGED, {\n stream: publisher.stream,\n property: 'hasVideo',\n value: publisher.stream.hasVideo\n });\n this.emit(EVENTS.STREAM_PROPERTY_CHANGED, {\n stream: publisher.stream,\n property: 'hasAudio',\n value: publisher.stream.hasAudio\n });\n\n if (publisher._target) {\n //\n // New video element where publishing video stream will be rendered\n //\n const video = document.createElement('video');\n\n if (!isIE11) {\n video.src = URL.createObjectURL(publisher.stream._mediaStream);\n }\n\n video.playsInline = true;\n video.autoplay = true;\n\n if (isIE11) {\n publisher._target.appendChild(video);\n publisher._element = attachMediaStream(video, publisher.stream._mediaStream);\n }\n\n const params = _.assign({}, {\n fitMode: 'contain',\n insertMode: 'append',\n mirror: false,\n resolution: '480x640',\n width: '100%',\n height: '100%'\n }, publisher.videoParams);\n\n const elementHeight = (typeof params.height === 'string') ? params.height : params.height + 'px';\n const elementWidth = (typeof params.width === 'string') ? params.width : params.width + 'px';\n\n _.assign((isIE11 ? publisher._element : video).style, {\n height: elementHeight,\n width: elementWidth,\n\n position: 'relative',\n 'object-fit': params.fitMode\n });\n\n if (!isIE11) {\n publisher._target.appendChild(video);\n publisher._element = video;\n }\n\n publisher.stream.setupDimensionsListener(video);\n }\n\n //\n // Enable (unpause) all media tracks related to publisher.\n // They are sending data to the server from this moment.\n //\n publisher.tracks.forEach(this._setTrackStateTo(true));\n });\n }\n\n /**\n * Unpublish stream and destroy publisher's view.\n *\n * Used internally by TsMediaPublisher.destroy\n *\n * @method\n *\n * @param { TsMediaPublisher } publisher\n *\n * @returns { Promise }\n *\n * @fires PUBLISHER_EVENTS#DESTROYED\n *\n * @see TsMediaPublisher#destroy\n */\n destroyPublisher(publisher) {\n return new Promise((resolve) => {\n publisher.tracks.forEach(this._setTrackStateTo(false));\n\n if (publisher._element) {\n publisher._element.remove();\n }\n\n publisher.emit(PUBLISHER_EVENTS.DESTROYED);\n\n return resolve();\n });\n }\n}\n"],"file":"session-kms.js"}
|