@techsee/techsee-media-service 6.1.0 → 7.0.0
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 +27 -28
- package/lib/LocalStreamManager.d.ts.map +1 -1
- package/lib/LocalStreamManager.js +9 -8
- package/lib/LocalStreamManager.js.map +1 -1
- package/lib/MediaContracts.d.ts.map +1 -1
- package/lib/MediaPublisher.d.ts.map +1 -1
- package/lib/MediaPublisher.js.map +1 -1
- package/lib/MediaServiceBase.d.ts.map +1 -1
- package/lib/MediaServiceBase.js +2 -0
- package/lib/MediaServiceBase.js.map +1 -1
- package/lib/MediaSession/MediaServer.d.ts.map +1 -1
- package/lib/MediaSession/MediaServer.js.map +1 -1
- package/lib/MediaSession/MediaSessionBase.d.ts.map +1 -1
- package/lib/MediaSession/MediaSessionBase.js.map +1 -1
- package/lib/MediaSession/SessionOpentok.d.ts.map +1 -1
- package/lib/MediaSession/SessionOpentok.js.map +1 -1
- package/lib/MediaSession/SessionTurn.d.ts.map +1 -1
- package/lib/MediaSession/SessionTurn.js +5 -5
- package/lib/MediaSession/SessionTurn.js.map +1 -1
- package/lib/MediaSubscriber.d.ts.map +1 -1
- package/lib/MediaSubscriber.js.map +1 -1
- package/lib/MediaUtils/Compatibility.d.ts.map +1 -1
- package/lib/MediaUtils/Compatibility.js +2 -1
- package/lib/MediaUtils/Compatibility.js.map +1 -1
- package/lib/MediaUtils/MediaDomUtils.d.ts.map +1 -1
- package/lib/MediaUtils/MediaDomUtils.js +2 -1
- package/lib/MediaUtils/MediaDomUtils.js.map +1 -1
- package/lib/MultiParty/Contracts.d.ts.map +1 -1
- package/lib/MultiParty/DetectWebRtcService.d.ts.map +1 -1
- package/lib/MultiParty/MediaCapabilitiesService.d.ts.map +1 -1
- package/lib/MultiParty/MediaCapabilitiesService.js +42 -23
- package/lib/MultiParty/MediaCapabilitiesService.js.map +1 -1
- package/lib/MultiParty/MediaCapabilitiesUtils.d.ts.map +1 -1
- package/lib/MultiParty/MultiPartyService.d.ts.map +1 -1
- package/lib/MultiParty/MultiPartyServiceFactory.d.ts.map +1 -1
- package/lib/MultiParty/OpentokMultiPartyService.d.ts.map +1 -1
- package/lib/MultiParty/OpentokMultiPartyService.js +27 -29
- package/lib/MultiParty/OpentokMultiPartyService.js.map +1 -1
- package/lib/MultiParty/VideoLayoutType.d.ts.map +1 -1
- package/lib/MultiParty/index.d.ts +1 -1
- package/lib/MultiParty/index.d.ts.map +1 -1
- package/lib/MultiParty/index.js +3 -16
- package/lib/MultiParty/index.js.map +1 -1
- package/lib/MultiParty/opentok.d.ts +407 -457
- package/lib/TechseeMediaStream.d.ts.map +1 -1
- package/lib/TechseeMediaStream.js.map +1 -1
- package/lib/qos/raw-qos.js.map +1 -1
- package/package.json +21 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/TechseeMediaStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/TechseeMediaStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;AAExE,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IAErD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmB;IAE/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IAEpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAc;gBAElC,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO;IAQ/F,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,UAAU,IAAI,gBAAgB,CAEjC;IAED,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED,IAAI,UAAU,IAAI,gBAAgB,CAEjC;IAED,IAAI,UAAU,IAAI,oBAAoB,CAErC;CACJ","file":"TechseeMediaStream.d.ts","sourcesContent":["import {KnownMediaStream, KnownMediaStreamKind} from './MediaConstants';\n\nexport class TechseeMediaStream {\n private readonly _mediaStreamTrack: MediaStreamTrack;\n\n private readonly _streamType: KnownMediaStream;\n\n private readonly _isRemote: boolean;\n\n private readonly dedicatedStream: MediaStream;\n\n constructor(mediaStreamTrack: MediaStreamTrack, streamType: KnownMediaStream, isRemote: boolean) {\n this._isRemote = isRemote;\n this._streamType = streamType;\n this._mediaStreamTrack = mediaStreamTrack;\n\n this.dedicatedStream = new MediaStream([mediaStreamTrack]);\n }\n\n get isRemote(): boolean {\n return this._isRemote;\n }\n\n get streamId(): string {\n return this._mediaStreamTrack.id;\n }\n\n get streamType(): KnownMediaStream {\n return this._streamType;\n }\n\n get mediaStream(): MediaStream {\n return this.dedicatedStream;\n }\n\n get mediaTrack(): MediaStreamTrack {\n return this._mediaStreamTrack;\n }\n\n get streamKind(): KnownMediaStreamKind {\n return this._mediaStreamTrack.kind as any;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["TechseeMediaStream.js","../src/TechseeMediaStream.ts"],"names":["Object","defineProperty","exports","value","TechseeMediaStream","mediaStreamTrack","streamType","isRemote","_isRemote","_streamType","_mediaStreamTrack","dedicatedStream","MediaStream","prototype","get","enumerable","configurable","id","kind"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;AAAEC,EAAAA,KAAK,EAAE;AAAT,CAA7C;AACAD,OAAO,CAACE,kBAAR,GAA6B,KAAK,CAAlC;;
|
|
1
|
+
{"version":3,"sources":["TechseeMediaStream.js","../src/TechseeMediaStream.ts"],"names":["Object","defineProperty","exports","value","TechseeMediaStream","mediaStreamTrack","streamType","isRemote","_isRemote","_streamType","_mediaStreamTrack","dedicatedStream","MediaStream","prototype","get","enumerable","configurable","id","kind"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;AAAEC,EAAAA,KAAK,EAAE;AAAT,CAA7C;AACAD,OAAO,CAACE,kBAAR,GAA6B,KAAK,CAAlC;;ACAA,IAAAA,kBAAA;AAAA;AAAA,YAAA;AASI,WAAAA,kBAAA,CAAYC,gBAAZ,EAAgDC,UAAhD,EAA8EC,QAA9E,EAA+F;AAC3F,SAAKC,SAAL,GAAiBD,QAAjB;AACA,SAAKE,WAAL,GAAmBH,UAAnB;AACA,SAAKI,iBAAL,GAAyBL,gBAAzB;AAEA,SAAKM,eAAL,GAAuB,IAAIC,WAAJ,CAAgB,CAACP,gBAAD,CAAhB,CAAvB;AACH;;AAEDL,EAAAA,MAAA,CAAAC,cAAA,CAAIG,kBAAA,CAAAS,SAAJ,EAAI,UAAJ,EAAY;ADRRC,IAAAA,GAAG,ECQP,eAAA;AACI,aAAO,KAAKN,SAAZ;AACH,KAFW;ADLRO,IAAAA,UAAU,EAAE,KCKJ;ADJRC,IAAAA,YAAY,EAAE;ACIN,GAAZ;AAIAhB,EAAAA,MAAA,CAAAC,cAAA,CAAIG,kBAAA,CAAAS,SAAJ,EAAI,UAAJ,EAAY;ADLRC,IAAAA,GAAG,ECKP,eAAA;AACI,aAAO,KAAKJ,iBAAL,CAAuBO,EAA9B;AACH,KAFW;ADFRF,IAAAA,UAAU,EAAE,KCEJ;ADDRC,IAAAA,YAAY,EAAE;ACCN,GAAZ;AAIAhB,EAAAA,MAAA,CAAAC,cAAA,CAAIG,kBAAA,CAAAS,SAAJ,EAAI,YAAJ,EAAc;ADFVC,IAAAA,GAAG,ECEP,eAAA;AACI,aAAO,KAAKL,WAAZ;AACH,KAFa;ADCVM,IAAAA,UAAU,EAAE,KCDF;ADEVC,IAAAA,YAAY,EAAE;ACFJ,GAAd;AAIAhB,EAAAA,MAAA,CAAAC,cAAA,CAAIG,kBAAA,CAAAS,SAAJ,EAAI,aAAJ,EAAe;ADCXC,IAAAA,GAAG,ECDP,eAAA;AACI,aAAO,KAAKH,eAAZ;AACH,KAFc;ADIXI,IAAAA,UAAU,EAAE,KCJD;ADKXC,IAAAA,YAAY,EAAE;ACLH,GAAf;AAIAhB,EAAAA,MAAA,CAAAC,cAAA,CAAIG,kBAAA,CAAAS,SAAJ,EAAI,YAAJ,EAAc;ADIVC,IAAAA,GAAG,ECJP,eAAA;AACI,aAAO,KAAKJ,iBAAZ;AACH,KAFa;ADOVK,IAAAA,UAAU,EAAE,KCPF;ADQVC,IAAAA,YAAY,EAAE;ACRJ,GAAd;AAIAhB,EAAAA,MAAA,CAAAC,cAAA,CAAIG,kBAAA,CAAAS,SAAJ,EAAI,YAAJ,EAAc;ADOVC,IAAAA,GAAG,ECPP,eAAA;AACI,aAAO,KAAKJ,iBAAL,CAAuBQ,IAA9B;AACH,KAFa;ADUVH,IAAAA,UAAU,EAAE,KCVF;ADWVC,IAAAA,YAAY,EAAE;ACXJ,GAAd;AAGJ,SAAAZ,kBAAA;AAxCA,CAAA,EAAA;;AAAaF,OAAA,CAAAE,kBAAA,GAAAA,kBAAA","file":"TechseeMediaStream.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TechseeMediaStream = void 0;\nvar TechseeMediaStream = /** @class */ (function () {\n function TechseeMediaStream(mediaStreamTrack, streamType, isRemote) {\n this._isRemote = isRemote;\n this._streamType = streamType;\n this._mediaStreamTrack = mediaStreamTrack;\n this.dedicatedStream = new MediaStream([mediaStreamTrack]);\n }\n Object.defineProperty(TechseeMediaStream.prototype, \"isRemote\", {\n get: function () {\n return this._isRemote;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaStream.prototype, \"streamId\", {\n get: function () {\n return this._mediaStreamTrack.id;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaStream.prototype, \"streamType\", {\n get: function () {\n return this._streamType;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaStream.prototype, \"mediaStream\", {\n get: function () {\n return this.dedicatedStream;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaStream.prototype, \"mediaTrack\", {\n get: function () {\n return this._mediaStreamTrack;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaStream.prototype, \"streamKind\", {\n get: function () {\n return this._mediaStreamTrack.kind;\n },\n enumerable: false,\n configurable: true\n });\n return TechseeMediaStream;\n}());\nexports.TechseeMediaStream = TechseeMediaStream;\n\n//# sourceMappingURL=TechseeMediaStream.js.map\n","import {KnownMediaStream, KnownMediaStreamKind} from './MediaConstants';\n\nexport class TechseeMediaStream {\n private readonly _mediaStreamTrack: MediaStreamTrack;\n\n private readonly _streamType: KnownMediaStream;\n\n private readonly _isRemote: boolean;\n\n private readonly dedicatedStream: MediaStream;\n\n constructor(mediaStreamTrack: MediaStreamTrack, streamType: KnownMediaStream, isRemote: boolean) {\n this._isRemote = isRemote;\n this._streamType = streamType;\n this._mediaStreamTrack = mediaStreamTrack;\n\n this.dedicatedStream = new MediaStream([mediaStreamTrack]);\n }\n\n get isRemote(): boolean {\n return this._isRemote;\n }\n\n get streamId(): string {\n return this._mediaStreamTrack.id;\n }\n\n get streamType(): KnownMediaStream {\n return this._streamType;\n }\n\n get mediaStream(): MediaStream {\n return this.dedicatedStream;\n }\n\n get mediaTrack(): MediaStreamTrack {\n return this._mediaStreamTrack;\n }\n\n get streamKind(): KnownMediaStreamKind {\n return this._mediaStreamTrack.kind as any;\n }\n}\n"]}
|
package/lib/qos/raw-qos.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["qos/raw-qos.js"],"names":["RawQos","instance","VIDEO_CODECS","rawQoSEntry","enableRawEntries","bytesPrev","timestampPrev","startTimestamp","stats","self","_clearRaw","values","stat","isRemote","type","_addRaw","_parseOutStats","remote","get","remoteId","_parseInStats","_parseRelated","bytesSent","bytesReceived","servers","_parseServerStats","track","frameWidth","_parseTrack","trackId","codec","codecId","_parseCodec","raw","item","push","_dumpItem","result","parent","totalRoundTripTime","currentRoundTripTime","availableOutgoingBitrate","localCandidate","localCandidateId","_parseLocal","remoteCandidate","remoteCandidateId","_parseRemote","mimeType","index","findIndex","toLowerCase","includes","videoCodec","localIP","ip","ipAddress","localPort","port","portNumber","localProtocol","protocol","transport","remoteIP","remotePort","remoteProtocol","frameHeight","framesPerSecond","videoFrameRate","isPublisher","videoSentPackets","packetsSent","videoSentPacketsLost","packetsLost","videoSentBytes","_parseBitrate","_parseFrameRate","_parseOther","_saveSomeMetrics","timestamp","videoDuration","toFixed","isSubscriber","videoReceivedPackets","packetsReceived","videoReceivedPacketsLost","videoReceivedBytes","ssrcPrev","ssrc","framesDecodedPrev","framesDecoded","_parseVideoDuration","discardedPackets","jitter","packetsRepaired","bytes","bitrateMean","videoBitRate","totalBytes","Math","floor","framerateMean","Number","res","statsString","Object","keys","forEach","k","length"],"mappings":"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","sourcesContent":["'use strict';\n\nexport class RawQos {\n constructor() {\n if (RawQos.instance) {\n return RawQos.instance;\n }\n\n this.VIDEO_CODECS = ['vp9', 'vp8', 'h264'];\n this.rawQoSEntry = {};\n this.enableRawEntries = true;\n\n this.bytesPrev = null;\n this.timestampPrev = null;\n this.startTimestamp = null;\n\n RawQos.instance = this;\n }\n\n parse(stats) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n self.rawQoSEntry = {};\n self._clearRaw();\n\n for (const stat of stats.values()) {\n if (!stat.isRemote) {\n switch (stat.type) {\n case 'outbound-rtp': {\n self._addRaw(stat);\n self._parseOutStats(stat, self.rawQoSEntry);\n\n const remote = stats.get(stat.remoteId);\n\n if (remote) {\n self._addRaw(remote);\n self.rawQoSEntry.remote = {};\n self._parseInStats(remote, self.rawQoSEntry.remote);\n }\n\n this._parseRelated(stats, stat, self);\n break;\n }\n case 'inbound-rtp': {\n self._addRaw(stat);\n self._parseInStats(stat, self.rawQoSEntry);\n\n const remote = stats.get(stat.remoteId);\n\n if (remote) {\n self._addRaw(remote);\n self.rawQoSEntry.remote = {};\n self._parseOutStats(remote, self.rawQoSEntry.remote);\n }\n\n this._parseRelated(stats, stat, self);\n break;\n }\n case 'remote-inbound-rtp': {\n self._addRaw(stat);\n self.rawQoSEntry.remote = {};\n self._parseInStats(stat, self.rawQoSEntry.remote);\n break;\n }\n case 'remote-outbound-rtp': {\n self._addRaw(stat);\n self.rawQoSEntry.remote = {};\n self._parseOutStats(stat, self.rawQoSEntry.remote);\n break;\n }\n case 'candidate-pair': {\n if ((stat.bytesSent > 0 || stat.bytesReceived > 0) &&\n (!self.rawQoSEntry.servers || stat.bytesSent > self.rawQoSEntry.servers.bytesSent ||\n stat.bytesReceived > self.rawQoSEntry.servers.bytesReceived)) {\n self.rawQoSEntry.servers = {};\n self._addRaw(stat);\n self._parseServerStats(stat, self.rawQoSEntry.servers, stats);\n }\n break;\n }\n case 'track': {\n self.track = stat;\n break;\n }\n }\n }\n }\n\n if (!self.rawQoSEntry.frameWidth && self.track) {\n self._addRaw(self.track);\n self._parseTrack(self.track, self.rawQoSEntry);\n }\n self.track = null;\n\n return self.rawQoSEntry;\n }\n\n _parseRelated(stats, stat, self) {\n const track = stats.get(stat.trackId);\n\n if (track) {\n self._addRaw(track);\n self._parseTrack(track, self.rawQoSEntry);\n }\n\n const codec = stats.get(stat.codecId);\n\n if (codec) {\n self._addRaw(codec);\n self._parseCodec(codec, self.rawQoSEntry);\n }\n }\n\n _clearRaw() {\n if (this.enableRawEntries) {\n this.rawQoSEntry.raw = [];\n }\n }\n\n _addRaw(item) {\n if (this.enableRawEntries && item) {\n if (!this.rawQoSEntry.raw) {\n this.rawQoSEntry.raw = [];\n }\n\n this.rawQoSEntry.raw.push(this._dumpItem(item));\n }\n }\n\n _parseServerStats(result, parent, stats) {\n parent.bytesSent = result.bytesSent;\n parent.bytesReceived = result.bytesReceived;\n if (typeof result.totalRoundTripTime === 'number') {\n parent.totalRoundTripTime = result.totalRoundTripTime;\n }\n if (typeof result.currentRoundTripTime === 'number') {\n parent.currentRoundTripTime = result.currentRoundTripTime;\n }\n if (typeof result.availableOutgoingBitrate === 'number') {\n parent.availableOutgoingBitrate = result.availableOutgoingBitrate;\n }\n\n const localCandidate = stats.get(result.localCandidateId);\n\n if (localCandidate) {\n this._addRaw(localCandidate);\n this._parseLocal(localCandidate, parent);\n }\n\n const remoteCandidate = stats.get(result.remoteCandidateId);\n\n if (remoteCandidate) {\n this._addRaw(remoteCandidate);\n this._parseRemote(remoteCandidate, parent);\n }\n }\n\n _parseCodec(result, parent) {\n if (result.mimeType) {\n const index = this.VIDEO_CODECS.findIndex((codec) => result.mimeType.toLowerCase().includes(codec));\n\n if (index >= 0) {\n parent.videoCodec = this.VIDEO_CODECS[index];\n }\n }\n }\n\n _parseLocal(result, parent) {\n parent.localIP = result.ip || result.ipAddress;\n parent.localPort = result.port || result.portNumber;\n parent.localProtocol = result.protocol || result.transport;\n }\n\n _parseRemote(result, parent) {\n parent.remoteIP = result.ip || result.ipAddress;\n parent.remotePort = result.port || result.portNumber;\n parent.remoteProtocol = result.protocol || result.transport;\n }\n\n _parseTrack(result, parent) {\n if (typeof result.frameWidth === 'number') {\n parent.frameWidth = result.frameWidth;\n }\n if (typeof result.frameHeight === 'number') {\n parent.frameHeight = result.frameHeight;\n }\n if (typeof result.framesPerSecond === 'number') {\n parent.videoFrameRate = result.framesPerSecond;\n }\n }\n\n _parseOutStats(result, parent) {\n parent.isPublisher = true;\n parent.videoSentPackets = result.packetsSent;\n parent.videoSentPacketsLost = result.packetsLost;\n parent.videoSentBytes = result.bytesSent;\n this._parseBitrate(result, parent, parent.videoSentBytes);\n this._parseFrameRate(result, parent, parent.videoSentBytes);\n this._parseOther(result, parent);\n this._saveSomeMetrics(parent, result);\n }\n\n _parseVideoDuration(result, parent) {\n if (!this.startTimestamp) {\n this.startTimestamp = result.timestamp;\n }\n parent.videoDuration = ((result.timestamp - this.startTimestamp) / 1000).toFixed(2);\n }\n\n _parseInStats(result, parent) {\n parent.isSubscriber = true;\n parent.videoReceivedPackets = result.packetsReceived;\n parent.videoReceivedPacketsLost = result.packetsLost;\n parent.videoReceivedBytes = result.bytesReceived;\n this._parseBitrate(result, parent, parent.videoReceivedBytes);\n this._parseFrameRate(result, parent, parent.videoReceivedBytes);\n this._parseOther(result, parent);\n this._saveSomeMetrics(parent, result);\n }\n\n _saveSomeMetrics(parent, result) {\n if (parent === this.rawQoSEntry) {\n this.bytesPrev = parent.videoReceivedBytes;\n this.timestampPrev = result.timestamp;\n this.ssrcPrev = result.ssrc;\n this.framesDecodedPrev = result.framesDecoded;\n this._parseVideoDuration(result, parent);\n }\n }\n\n _parseOther(result, parent) {\n parent.timestamp = result.timestamp;\n parent.ssrc = result.ssrc;\n if (typeof result.discardedPackets === 'number') {\n parent.discardedPackets = result.discardedPackets;\n }\n if (typeof result.jitter === 'number') {\n parent.jitter = result.jitter;\n }\n if (typeof result.packetsRepaired === 'number') {\n parent.packetsRepaired = result.packetsRepaired;\n }\n }\n\n _parseBitrate(result, parent, bytes) {\n if (bytes > 0) {\n if (typeof result.bitrateMean === 'number') {\n parent.videoBitRate = (result.bitrateMean).toFixed(2);\n\n } else if (this.bytesPrev && this.timestampPrev) {\n let totalBytes = bytes;\n\n if ((result.ssrc === this.ssrcPrev) && (bytes > this.bytesPrev)) {\n totalBytes = bytes - this.bytesPrev;\n }\n\n parent.videoBitRate = Math.floor((8 * totalBytes) / ((result.timestamp - this.timestampPrev) / 1000));\n }\n } else {\n parent.videoBitRate = 0;\n }\n }\n\n _parseFrameRate(result, parent, bytes) {\n if (bytes > 0) {\n if (typeof result.framerateMean === 'number') {\n parent.videoFrameRate = Number(result.framerateMean).toFixed(2);\n } else if (this.framesDecodedPrev && this.timestampPrev) {\n if (result.framesDecoded >= this.framesDecodedPrev && result.timestamp > this.timestampPrev) {\n parent.videoFrameRate = ((result.framesDecoded - this.framesDecodedPrev) / ((result.timestamp - this.timestampPrev) / 1000)).toFixed(2);\n }\n }\n } else {\n parent.videoFrameRate = 0;\n }\n }\n\n _dumpItem(res) {\n let statsString = '{';\n let index = 0;\n\n Object.keys(res).forEach((k) => {\n statsString += `\"${k}\": \"${res[k]}\"`;\n if (++index !== res.length) {\n statsString += ',';\n }\n });\n statsString += '}';\n\n return statsString;\n }\n}\n"],"file":"raw-qos.js"}
|
|
1
|
+
{"version":3,"sources":["qos/raw-qos.js"],"names":["RawQos","instance","VIDEO_CODECS","rawQoSEntry","enableRawEntries","bytesPrev","timestampPrev","startTimestamp","stats","self","_clearRaw","values","stat","isRemote","type","_addRaw","_parseOutStats","remote","get","remoteId","_parseInStats","_parseRelated","bytesSent","bytesReceived","servers","_parseServerStats","track","frameWidth","_parseTrack","trackId","codec","codecId","_parseCodec","raw","item","push","_dumpItem","result","parent","totalRoundTripTime","currentRoundTripTime","availableOutgoingBitrate","localCandidate","localCandidateId","_parseLocal","remoteCandidate","remoteCandidateId","_parseRemote","mimeType","index","findIndex","toLowerCase","includes","videoCodec","localIP","ip","ipAddress","localPort","port","portNumber","localProtocol","protocol","transport","remoteIP","remotePort","remoteProtocol","frameHeight","framesPerSecond","videoFrameRate","isPublisher","videoSentPackets","packetsSent","videoSentPacketsLost","packetsLost","videoSentBytes","_parseBitrate","_parseFrameRate","_parseOther","_saveSomeMetrics","timestamp","videoDuration","toFixed","isSubscriber","videoReceivedPackets","packetsReceived","videoReceivedPacketsLost","videoReceivedBytes","ssrcPrev","ssrc","framesDecodedPrev","framesDecoded","_parseVideoDuration","discardedPackets","jitter","packetsRepaired","bytes","bitrateMean","videoBitRate","totalBytes","Math","floor","framerateMean","Number","res","statsString","Object","keys","forEach","k","length"],"mappings":"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","sourcesContent":["'use strict';\n\nexport class RawQos {\n constructor() {\n if (RawQos.instance) {\n return RawQos.instance;\n }\n\n this.VIDEO_CODECS = ['vp9', 'vp8', 'h264'];\n this.rawQoSEntry = {};\n this.enableRawEntries = true;\n\n this.bytesPrev = null;\n this.timestampPrev = null;\n this.startTimestamp = null;\n\n RawQos.instance = this;\n }\n\n parse(stats) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n self.rawQoSEntry = {};\n self._clearRaw();\n\n for (const stat of stats.values()) {\n if (!stat.isRemote) {\n switch (stat.type) {\n case 'outbound-rtp': {\n self._addRaw(stat);\n self._parseOutStats(stat, self.rawQoSEntry);\n\n const remote = stats.get(stat.remoteId);\n\n if (remote) {\n self._addRaw(remote);\n self.rawQoSEntry.remote = {};\n self._parseInStats(remote, self.rawQoSEntry.remote);\n }\n\n this._parseRelated(stats, stat, self);\n break;\n }\n case 'inbound-rtp': {\n self._addRaw(stat);\n self._parseInStats(stat, self.rawQoSEntry);\n\n const remote = stats.get(stat.remoteId);\n\n if (remote) {\n self._addRaw(remote);\n self.rawQoSEntry.remote = {};\n self._parseOutStats(remote, self.rawQoSEntry.remote);\n }\n\n this._parseRelated(stats, stat, self);\n break;\n }\n case 'remote-inbound-rtp': {\n self._addRaw(stat);\n self.rawQoSEntry.remote = {};\n self._parseInStats(stat, self.rawQoSEntry.remote);\n break;\n }\n case 'remote-outbound-rtp': {\n self._addRaw(stat);\n self.rawQoSEntry.remote = {};\n self._parseOutStats(stat, self.rawQoSEntry.remote);\n break;\n }\n case 'candidate-pair': {\n if (\n (stat.bytesSent > 0 || stat.bytesReceived > 0) &&\n (!self.rawQoSEntry.servers ||\n stat.bytesSent > self.rawQoSEntry.servers.bytesSent ||\n stat.bytesReceived > self.rawQoSEntry.servers.bytesReceived)\n ) {\n self.rawQoSEntry.servers = {};\n self._addRaw(stat);\n self._parseServerStats(stat, self.rawQoSEntry.servers, stats);\n }\n break;\n }\n case 'track': {\n self.track = stat;\n break;\n }\n }\n }\n }\n\n if (!self.rawQoSEntry.frameWidth && self.track) {\n self._addRaw(self.track);\n self._parseTrack(self.track, self.rawQoSEntry);\n }\n self.track = null;\n\n return self.rawQoSEntry;\n }\n\n _parseRelated(stats, stat, self) {\n const track = stats.get(stat.trackId);\n\n if (track) {\n self._addRaw(track);\n self._parseTrack(track, self.rawQoSEntry);\n }\n\n const codec = stats.get(stat.codecId);\n\n if (codec) {\n self._addRaw(codec);\n self._parseCodec(codec, self.rawQoSEntry);\n }\n }\n\n _clearRaw() {\n if (this.enableRawEntries) {\n this.rawQoSEntry.raw = [];\n }\n }\n\n _addRaw(item) {\n if (this.enableRawEntries && item) {\n if (!this.rawQoSEntry.raw) {\n this.rawQoSEntry.raw = [];\n }\n\n this.rawQoSEntry.raw.push(this._dumpItem(item));\n }\n }\n\n _parseServerStats(result, parent, stats) {\n parent.bytesSent = result.bytesSent;\n parent.bytesReceived = result.bytesReceived;\n if (typeof result.totalRoundTripTime === 'number') {\n parent.totalRoundTripTime = result.totalRoundTripTime;\n }\n if (typeof result.currentRoundTripTime === 'number') {\n parent.currentRoundTripTime = result.currentRoundTripTime;\n }\n if (typeof result.availableOutgoingBitrate === 'number') {\n parent.availableOutgoingBitrate = result.availableOutgoingBitrate;\n }\n\n const localCandidate = stats.get(result.localCandidateId);\n\n if (localCandidate) {\n this._addRaw(localCandidate);\n this._parseLocal(localCandidate, parent);\n }\n\n const remoteCandidate = stats.get(result.remoteCandidateId);\n\n if (remoteCandidate) {\n this._addRaw(remoteCandidate);\n this._parseRemote(remoteCandidate, parent);\n }\n }\n\n _parseCodec(result, parent) {\n if (result.mimeType) {\n const index = this.VIDEO_CODECS.findIndex((codec) => result.mimeType.toLowerCase().includes(codec));\n\n if (index >= 0) {\n parent.videoCodec = this.VIDEO_CODECS[index];\n }\n }\n }\n\n _parseLocal(result, parent) {\n parent.localIP = result.ip || result.ipAddress;\n parent.localPort = result.port || result.portNumber;\n parent.localProtocol = result.protocol || result.transport;\n }\n\n _parseRemote(result, parent) {\n parent.remoteIP = result.ip || result.ipAddress;\n parent.remotePort = result.port || result.portNumber;\n parent.remoteProtocol = result.protocol || result.transport;\n }\n\n _parseTrack(result, parent) {\n if (typeof result.frameWidth === 'number') {\n parent.frameWidth = result.frameWidth;\n }\n if (typeof result.frameHeight === 'number') {\n parent.frameHeight = result.frameHeight;\n }\n if (typeof result.framesPerSecond === 'number') {\n parent.videoFrameRate = result.framesPerSecond;\n }\n }\n\n _parseOutStats(result, parent) {\n parent.isPublisher = true;\n parent.videoSentPackets = result.packetsSent;\n parent.videoSentPacketsLost = result.packetsLost;\n parent.videoSentBytes = result.bytesSent;\n this._parseBitrate(result, parent, parent.videoSentBytes);\n this._parseFrameRate(result, parent, parent.videoSentBytes);\n this._parseOther(result, parent);\n this._saveSomeMetrics(parent, result);\n }\n\n _parseVideoDuration(result, parent) {\n if (!this.startTimestamp) {\n this.startTimestamp = result.timestamp;\n }\n parent.videoDuration = ((result.timestamp - this.startTimestamp) / 1000).toFixed(2);\n }\n\n _parseInStats(result, parent) {\n parent.isSubscriber = true;\n parent.videoReceivedPackets = result.packetsReceived;\n parent.videoReceivedPacketsLost = result.packetsLost;\n parent.videoReceivedBytes = result.bytesReceived;\n this._parseBitrate(result, parent, parent.videoReceivedBytes);\n this._parseFrameRate(result, parent, parent.videoReceivedBytes);\n this._parseOther(result, parent);\n this._saveSomeMetrics(parent, result);\n }\n\n _saveSomeMetrics(parent, result) {\n if (parent === this.rawQoSEntry) {\n this.bytesPrev = parent.videoReceivedBytes;\n this.timestampPrev = result.timestamp;\n this.ssrcPrev = result.ssrc;\n this.framesDecodedPrev = result.framesDecoded;\n this._parseVideoDuration(result, parent);\n }\n }\n\n _parseOther(result, parent) {\n parent.timestamp = result.timestamp;\n parent.ssrc = result.ssrc;\n if (typeof result.discardedPackets === 'number') {\n parent.discardedPackets = result.discardedPackets;\n }\n if (typeof result.jitter === 'number') {\n parent.jitter = result.jitter;\n }\n if (typeof result.packetsRepaired === 'number') {\n parent.packetsRepaired = result.packetsRepaired;\n }\n }\n\n _parseBitrate(result, parent, bytes) {\n if (bytes > 0) {\n if (typeof result.bitrateMean === 'number') {\n parent.videoBitRate = result.bitrateMean.toFixed(2);\n } else if (this.bytesPrev && this.timestampPrev) {\n let totalBytes = bytes;\n\n if (result.ssrc === this.ssrcPrev && bytes > this.bytesPrev) {\n totalBytes = bytes - this.bytesPrev;\n }\n\n parent.videoBitRate = Math.floor((8 * totalBytes) / ((result.timestamp - this.timestampPrev) / 1000));\n }\n } else {\n parent.videoBitRate = 0;\n }\n }\n\n _parseFrameRate(result, parent, bytes) {\n if (bytes > 0) {\n if (typeof result.framerateMean === 'number') {\n parent.videoFrameRate = Number(result.framerateMean).toFixed(2);\n } else if (this.framesDecodedPrev && this.timestampPrev) {\n if (result.framesDecoded >= this.framesDecodedPrev && result.timestamp > this.timestampPrev) {\n parent.videoFrameRate = (\n (result.framesDecoded - this.framesDecodedPrev) /\n ((result.timestamp - this.timestampPrev) / 1000)\n ).toFixed(2);\n }\n }\n } else {\n parent.videoFrameRate = 0;\n }\n }\n\n _dumpItem(res) {\n let statsString = '{';\n let index = 0;\n\n Object.keys(res).forEach((k) => {\n statsString += `\"${k}\": \"${res[k]}\"`;\n if (++index !== res.length) {\n statsString += ',';\n }\n });\n statsString += '}';\n\n return statsString;\n }\n}\n"],"file":"raw-qos.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@techsee/techsee-media-service",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.0",
|
|
4
4
|
"description": "Techsee Media Service",
|
|
5
5
|
"author": "TechSee",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -10,17 +10,24 @@
|
|
|
10
10
|
"postpublish": "npm run clean",
|
|
11
11
|
"build": "npm run lint-fix && npm run test && gulp --gulpfile ./.tools/build.js",
|
|
12
12
|
"clean": "gulp --gulpfile ./.tools/build.js --clean",
|
|
13
|
-
"lint": "
|
|
14
|
-
"lint-
|
|
13
|
+
"lint": "eslint \"./**/*.{js?(x),ts?(x)}\"",
|
|
14
|
+
"lint-staged": "lint-staged",
|
|
15
|
+
"lint-fix": "run-s lint-fix:*",
|
|
16
|
+
"lint-fix:prettier": "prettier --write \"./**/*.{js?(x),ts?(x),json,scss,md}\"",
|
|
17
|
+
"lint-fix:eslint": "eslint --fix --color \"./**/*.{js?(x),ts?(x)}\"",
|
|
15
18
|
"tag": "git tag v$npm_package_version -f | git push -f --tags",
|
|
16
19
|
"demo": "start-storybook -p 9003 -c .storybook -s ./ && open http://localhost:9003/",
|
|
17
20
|
"demo-build": "build-storybook -c .storybook -o demo-dist",
|
|
18
21
|
"test": "jest --config=./jest.config.js"
|
|
19
22
|
},
|
|
23
|
+
"lint-staged": {
|
|
24
|
+
"./**/*.{js?(x),ts?(x),json,scss,md}": "prettier --write",
|
|
25
|
+
"./**/*.{js?(x),ts?(x)}": "eslint --fix --color"
|
|
26
|
+
},
|
|
20
27
|
"dependencies": {
|
|
21
28
|
"@techsee/kurento-utils-temasys-mod": "6.6.3-dev-3",
|
|
22
29
|
"@techsee/openvidu-browser": "~12.15.6",
|
|
23
|
-
"@techsee/techsee-common": "^3.
|
|
30
|
+
"@techsee/techsee-common": "^3.7.0",
|
|
24
31
|
"bluebird": "~3.7.2",
|
|
25
32
|
"kurento-utils": "6.6.2",
|
|
26
33
|
"lodash": "4.17.20",
|
|
@@ -54,21 +61,27 @@
|
|
|
54
61
|
"babel-plugin-transform-class-properties": "6.24.1",
|
|
55
62
|
"babel-plugin-transform-runtime": "6.23.0",
|
|
56
63
|
"del": "~4.1.1",
|
|
57
|
-
"eslint": "~7.
|
|
64
|
+
"eslint": "~7.32.0",
|
|
58
65
|
"eslint-config-airbnb": "~18.2.1",
|
|
59
|
-
"eslint-config-
|
|
66
|
+
"eslint-config-airbnb-typescript": "~14.0.0",
|
|
67
|
+
"eslint-config-prettier": "~8.3.0",
|
|
68
|
+
"eslint-plugin-eslint-comments": "~3.2.0",
|
|
60
69
|
"eslint-plugin-import": "~2.22.1",
|
|
61
70
|
"eslint-plugin-jest": "24.1.3",
|
|
62
71
|
"eslint-plugin-jsx-a11y": "~6.4.1",
|
|
63
72
|
"eslint-plugin-prettier": "~3.3.1",
|
|
64
|
-
"eslint-plugin-react": "~7.
|
|
73
|
+
"eslint-plugin-react": "~7.26.1",
|
|
74
|
+
"eslint-plugin-react-hooks": "~4.2.0",
|
|
65
75
|
"gulp": "~4.0.1",
|
|
66
76
|
"gulp-babel": "8.0.0",
|
|
67
77
|
"gulp-sourcemaps": "~2.6.5",
|
|
68
78
|
"gulp-typescript": "~5.0.1",
|
|
69
79
|
"husky": "~4.3.8",
|
|
70
80
|
"jest": "~26.6.3",
|
|
81
|
+
"lint-staged": "~11.2.0",
|
|
71
82
|
"merge-stream": "~1.0.1",
|
|
83
|
+
"npm-run-all": "~4.1.5",
|
|
84
|
+
"prettier": "~2.4.1",
|
|
72
85
|
"react": "17.0.1",
|
|
73
86
|
"react-dom": "17.0.1",
|
|
74
87
|
"socket.io": "~2.2.0",
|
|
@@ -78,7 +91,7 @@
|
|
|
78
91
|
},
|
|
79
92
|
"husky": {
|
|
80
93
|
"hooks": {
|
|
81
|
-
"pre-commit": "npm run lint
|
|
94
|
+
"pre-commit": "npm run lint-staged",
|
|
82
95
|
"pre-push": "npm run lint && npm test"
|
|
83
96
|
}
|
|
84
97
|
},
|