livekit-client 0.15.0 → 0.15.4
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/.gitmodules +3 -0
- package/README.md +21 -4
- package/dist/api/SignalClient.d.ts +11 -2
- package/dist/api/SignalClient.js +92 -25
- package/dist/api/SignalClient.js.map +1 -1
- package/dist/connect.js +3 -0
- package/dist/connect.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/logger.js +1 -0
- package/dist/logger.js.map +1 -1
- package/dist/options.d.ts +28 -14
- package/dist/proto/livekit_models.d.ts +48 -0
- package/dist/proto/livekit_models.js +367 -5
- package/dist/proto/livekit_models.js.map +1 -1
- package/dist/proto/livekit_rtc.d.ts +100 -1
- package/dist/proto/livekit_rtc.js +745 -3
- package/dist/proto/livekit_rtc.js.map +1 -1
- package/dist/room/PCTransport.js +4 -0
- package/dist/room/PCTransport.js.map +1 -1
- package/dist/room/RTCEngine.d.ts +4 -0
- package/dist/room/RTCEngine.js +73 -34
- package/dist/room/RTCEngine.js.map +1 -1
- package/dist/room/Room.d.ts +15 -0
- package/dist/room/Room.js +172 -59
- package/dist/room/Room.js.map +1 -1
- package/dist/room/events.d.ts +60 -24
- package/dist/room/events.js +58 -22
- package/dist/room/events.js.map +1 -1
- package/dist/room/participant/LocalParticipant.d.ts +26 -2
- package/dist/room/participant/LocalParticipant.js +69 -21
- package/dist/room/participant/LocalParticipant.js.map +1 -1
- package/dist/room/participant/Participant.d.ts +3 -1
- package/dist/room/participant/Participant.js +1 -0
- package/dist/room/participant/Participant.js.map +1 -1
- package/dist/room/participant/ParticipantTrackPermission.d.ts +19 -0
- package/dist/room/participant/ParticipantTrackPermission.js +16 -0
- package/dist/room/participant/ParticipantTrackPermission.js.map +1 -0
- package/dist/room/participant/RemoteParticipant.d.ts +2 -2
- package/dist/room/participant/RemoteParticipant.js +9 -15
- package/dist/room/participant/RemoteParticipant.js.map +1 -1
- package/dist/room/participant/publishUtils.d.ts +1 -1
- package/dist/room/participant/publishUtils.js +4 -4
- package/dist/room/participant/publishUtils.js.map +1 -1
- package/dist/room/participant/publishUtils.test.js +10 -1
- package/dist/room/participant/publishUtils.test.js.map +1 -1
- package/dist/room/stats.d.ts +21 -6
- package/dist/room/stats.js +22 -1
- package/dist/room/stats.js.map +1 -1
- package/dist/room/track/LocalAudioTrack.d.ts +5 -1
- package/dist/room/track/LocalAudioTrack.js +45 -1
- package/dist/room/track/LocalAudioTrack.js.map +1 -1
- package/dist/room/track/LocalTrack.js +1 -1
- package/dist/room/track/LocalTrack.js.map +1 -1
- package/dist/room/track/LocalTrackPublication.d.ts +3 -1
- package/dist/room/track/LocalTrackPublication.js +15 -5
- package/dist/room/track/LocalTrackPublication.js.map +1 -1
- package/dist/room/track/LocalVideoTrack.d.ts +8 -1
- package/dist/room/track/LocalVideoTrack.js +117 -52
- package/dist/room/track/LocalVideoTrack.js.map +1 -1
- package/dist/room/track/RemoteAudioTrack.d.ts +6 -8
- package/dist/room/track/RemoteAudioTrack.js +55 -19
- package/dist/room/track/RemoteAudioTrack.js.map +1 -1
- package/dist/room/track/RemoteTrack.d.ts +14 -0
- package/dist/room/track/RemoteTrack.js +47 -0
- package/dist/room/track/RemoteTrack.js.map +1 -0
- package/dist/room/track/RemoteTrackPublication.d.ts +10 -2
- package/dist/room/track/RemoteTrackPublication.js +49 -16
- package/dist/room/track/RemoteTrackPublication.js.map +1 -1
- package/dist/room/track/RemoteVideoTrack.d.ts +7 -7
- package/dist/room/track/RemoteVideoTrack.js +66 -22
- package/dist/room/track/RemoteVideoTrack.js.map +1 -1
- package/dist/room/track/Track.d.ts +12 -0
- package/dist/room/track/Track.js +33 -0
- package/dist/room/track/Track.js.map +1 -1
- package/dist/room/track/TrackPublication.d.ts +14 -1
- package/dist/room/track/TrackPublication.js +24 -7
- package/dist/room/track/TrackPublication.js.map +1 -1
- package/dist/room/track/create.d.ts +23 -0
- package/dist/room/track/create.js +130 -0
- package/dist/room/track/create.js.map +1 -0
- package/dist/room/track/defaults.d.ts +4 -0
- package/dist/room/track/defaults.js +21 -0
- package/dist/room/track/defaults.js.map +1 -0
- package/dist/room/utils.d.ts +3 -1
- package/dist/room/utils.js +36 -6
- package/dist/room/utils.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +5 -3
- package/src/api/SignalClient.ts +434 -0
- package/src/connect.ts +100 -0
- package/src/index.ts +47 -0
- package/src/logger.ts +22 -0
- package/src/options.ts +152 -0
- package/src/proto/livekit_models.ts +1863 -0
- package/src/proto/livekit_rtc.ts +3401 -0
- package/src/room/DeviceManager.ts +57 -0
- package/src/room/PCTransport.ts +86 -0
- package/src/room/RTCEngine.ts +484 -0
- package/src/room/Room.ts +785 -0
- package/src/room/errors.ts +65 -0
- package/src/room/events.ts +396 -0
- package/src/room/participant/LocalParticipant.ts +685 -0
- package/src/room/participant/Participant.ts +214 -0
- package/src/room/participant/ParticipantTrackPermission.ts +32 -0
- package/src/room/participant/RemoteParticipant.ts +238 -0
- package/src/room/participant/publishUtils.test.ts +105 -0
- package/src/room/participant/publishUtils.ts +180 -0
- package/src/room/stats.ts +130 -0
- package/src/room/track/LocalAudioTrack.ts +112 -0
- package/src/room/track/LocalTrack.ts +124 -0
- package/src/room/track/LocalTrackPublication.ts +63 -0
- package/src/room/track/LocalVideoTrack.test.ts +70 -0
- package/src/room/track/LocalVideoTrack.ts +416 -0
- package/src/room/track/RemoteAudioTrack.ts +58 -0
- package/src/room/track/RemoteTrack.ts +59 -0
- package/src/room/track/RemoteTrackPublication.ts +192 -0
- package/src/room/track/RemoteVideoTrack.ts +213 -0
- package/src/room/track/Track.ts +301 -0
- package/src/room/track/TrackPublication.ts +120 -0
- package/src/room/track/create.ts +120 -0
- package/src/room/track/defaults.ts +23 -0
- package/src/room/track/options.ts +229 -0
- package/src/room/track/types.ts +8 -0
- package/src/room/track/utils.test.ts +93 -0
- package/src/room/track/utils.ts +76 -0
- package/src/room/utils.ts +74 -0
- package/src/version.ts +2 -0
- package/.github/workflows/publish.yaml +0 -55
- package/.github/workflows/test.yaml +0 -36
- package/example/index.html +0 -237
- package/example/sample.ts +0 -575
- package/example/styles.css +0 -144
- package/example/webpack.config.js +0 -33
@@ -8,19 +8,24 @@ const livekit_models_1 = require("../../proto/livekit_models");
|
|
8
8
|
const livekit_rtc_1 = require("../../proto/livekit_rtc");
|
9
9
|
const events_1 = require("../events");
|
10
10
|
const RemoteVideoTrack_1 = __importDefault(require("./RemoteVideoTrack"));
|
11
|
-
const TrackPublication_1 =
|
12
|
-
class RemoteTrackPublication extends TrackPublication_1.
|
11
|
+
const TrackPublication_1 = require("./TrackPublication");
|
12
|
+
class RemoteTrackPublication extends TrackPublication_1.TrackPublication {
|
13
13
|
constructor() {
|
14
14
|
super(...arguments);
|
15
|
+
/** @internal */
|
16
|
+
this._allowed = true;
|
15
17
|
this.disabled = false;
|
16
18
|
this.currentVideoQuality = livekit_models_1.VideoQuality.HIGH;
|
19
|
+
this.handleEnded = (track) => {
|
20
|
+
this.emit(events_1.TrackEvent.Ended, track);
|
21
|
+
};
|
17
22
|
this.handleVisibilityChange = (visible) => {
|
18
|
-
logger_1.default.debug('
|
23
|
+
logger_1.default.debug('adaptivestream video visibility', this.trackSid, `visible=${visible}`);
|
19
24
|
this.disabled = !visible;
|
20
25
|
this.emitTrackUpdate();
|
21
26
|
};
|
22
27
|
this.handleVideoDimensionsChange = (dimensions) => {
|
23
|
-
logger_1.default.debug('
|
28
|
+
logger_1.default.debug('adaptivestream video dimensions', this.trackSid, `${dimensions.width}x${dimensions.height}`);
|
24
29
|
this.videoDimensions = dimensions;
|
25
30
|
this.emitTrackUpdate();
|
26
31
|
};
|
@@ -34,13 +39,29 @@ class RemoteTrackPublication extends TrackPublication_1.default {
|
|
34
39
|
const sub = {
|
35
40
|
trackSids: [this.trackSid],
|
36
41
|
subscribe: this.subscribed,
|
42
|
+
participantTracks: [],
|
37
43
|
};
|
38
44
|
this.emit(events_1.TrackEvent.UpdateSubscription, sub);
|
39
45
|
}
|
46
|
+
get subscriptionStatus() {
|
47
|
+
if (this.subscribed === false || !super.isSubscribed) {
|
48
|
+
return TrackPublication_1.TrackPublication.SubscriptionStatus.Unsubscribed;
|
49
|
+
}
|
50
|
+
if (!this._allowed) {
|
51
|
+
return TrackPublication_1.TrackPublication.SubscriptionStatus.NotAllowed;
|
52
|
+
}
|
53
|
+
return TrackPublication_1.TrackPublication.SubscriptionStatus.Subscribed;
|
54
|
+
}
|
55
|
+
/**
|
56
|
+
* Returns true if track is subscribed, and ready for playback
|
57
|
+
*/
|
40
58
|
get isSubscribed() {
|
41
59
|
if (this.subscribed === false) {
|
42
60
|
return false;
|
43
61
|
}
|
62
|
+
if (!this._allowed) {
|
63
|
+
return false;
|
64
|
+
}
|
44
65
|
return super.isSubscribed;
|
45
66
|
}
|
46
67
|
get isEnabled() {
|
@@ -53,10 +74,7 @@ class RemoteTrackPublication extends TrackPublication_1.default {
|
|
53
74
|
* @param enabled
|
54
75
|
*/
|
55
76
|
setEnabled(enabled) {
|
56
|
-
if (
|
57
|
-
return;
|
58
|
-
}
|
59
|
-
if (this.track instanceof RemoteVideoTrack_1.default && this.track.isAutoManaged) {
|
77
|
+
if (!this.isManualOperationAllowed() || this.disabled === !enabled) {
|
60
78
|
return;
|
61
79
|
}
|
62
80
|
this.disabled = !enabled;
|
@@ -70,7 +88,7 @@ class RemoteTrackPublication extends TrackPublication_1.default {
|
|
70
88
|
* optimize for uninterrupted video
|
71
89
|
*/
|
72
90
|
setVideoQuality(quality) {
|
73
|
-
if (
|
91
|
+
if (!this.isManualOperationAllowed() || this.currentVideoQuality === quality) {
|
74
92
|
return;
|
75
93
|
}
|
76
94
|
this.currentVideoQuality = quality;
|
@@ -79,7 +97,7 @@ class RemoteTrackPublication extends TrackPublication_1.default {
|
|
79
97
|
}
|
80
98
|
setVideoDimensions(dimensions) {
|
81
99
|
var _a, _b;
|
82
|
-
if (!this.
|
100
|
+
if (!this.isManualOperationAllowed()) {
|
83
101
|
return;
|
84
102
|
}
|
85
103
|
if (((_a = this.videoDimensions) === null || _a === void 0 ? void 0 : _a.width) === dimensions.width
|
@@ -96,15 +114,19 @@ class RemoteTrackPublication extends TrackPublication_1.default {
|
|
96
114
|
return this.currentVideoQuality;
|
97
115
|
}
|
98
116
|
setTrack(track) {
|
99
|
-
var _a, _b;
|
100
117
|
if (this.track) {
|
101
118
|
// unregister listener
|
102
119
|
this.track.off(events_1.TrackEvent.VideoDimensionsChanged, this.handleVideoDimensionsChange);
|
103
120
|
this.track.off(events_1.TrackEvent.VisibilityChanged, this.handleVisibilityChange);
|
121
|
+
this.track.off(events_1.TrackEvent.Ended, this.handleEnded);
|
104
122
|
}
|
105
123
|
super.setTrack(track);
|
106
|
-
(
|
107
|
-
|
124
|
+
if (track) {
|
125
|
+
track.sid = this.trackSid;
|
126
|
+
track.on(events_1.TrackEvent.VideoDimensionsChanged, this.handleVideoDimensionsChange);
|
127
|
+
track.on(events_1.TrackEvent.VisibilityChanged, this.handleVisibilityChange);
|
128
|
+
track.on(events_1.TrackEvent.Ended, this.handleEnded);
|
129
|
+
}
|
108
130
|
}
|
109
131
|
/** @internal */
|
110
132
|
updateInfo(info) {
|
@@ -113,8 +135,19 @@ class RemoteTrackPublication extends TrackPublication_1.default {
|
|
113
135
|
this.metadataMuted = info.muted;
|
114
136
|
(_a = this.track) === null || _a === void 0 ? void 0 : _a.setMuted(info.muted);
|
115
137
|
}
|
116
|
-
|
117
|
-
|
138
|
+
isManualOperationAllowed() {
|
139
|
+
if (this.isAdaptiveStream) {
|
140
|
+
logger_1.default.warn('adaptive stream is enabled, cannot change track settings', this.trackSid);
|
141
|
+
return false;
|
142
|
+
}
|
143
|
+
if (!this.isSubscribed) {
|
144
|
+
logger_1.default.warn('cannot update track settings when not subscribed', this.trackSid);
|
145
|
+
return false;
|
146
|
+
}
|
147
|
+
return true;
|
148
|
+
}
|
149
|
+
get isAdaptiveStream() {
|
150
|
+
return this.track instanceof RemoteVideoTrack_1.default && this.track.isAdaptiveStream;
|
118
151
|
}
|
119
152
|
emitTrackUpdate() {
|
120
153
|
const settings = livekit_rtc_1.UpdateTrackSettings.fromPartial({
|
@@ -125,7 +158,7 @@ class RemoteTrackPublication extends TrackPublication_1.default {
|
|
125
158
|
settings.width = this.videoDimensions.width;
|
126
159
|
settings.height = this.videoDimensions.height;
|
127
160
|
}
|
128
|
-
else if (this.currentVideoQuality) {
|
161
|
+
else if (this.currentVideoQuality !== undefined) {
|
129
162
|
settings.quality = this.currentVideoQuality;
|
130
163
|
}
|
131
164
|
else {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"RemoteTrackPublication.js","sourceRoot":"","sources":["../../../src/room/track/RemoteTrackPublication.ts"],"names":[],"mappings":";;;;;AAAA,0DAA+B;AAC/B,+DAAqE;AACrE,yDAGiC;AACjC,sCAAuC;AACvC,0EAAkD;AAElD,
|
1
|
+
{"version":3,"file":"RemoteTrackPublication.js","sourceRoot":"","sources":["../../../src/room/track/RemoteTrackPublication.ts"],"names":[],"mappings":"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"}
|
@@ -1,22 +1,22 @@
|
|
1
|
-
import
|
2
|
-
export default class RemoteVideoTrack extends
|
1
|
+
import RemoteTrack from './RemoteTrack';
|
2
|
+
export default class RemoteVideoTrack extends RemoteTrack {
|
3
3
|
/** @internal */
|
4
4
|
receiver?: RTCRtpReceiver;
|
5
5
|
private prevStats?;
|
6
6
|
private elementInfos;
|
7
|
-
private
|
7
|
+
private adaptiveStream?;
|
8
8
|
private lastVisible?;
|
9
9
|
private lastDimensions?;
|
10
|
-
constructor(mediaTrack: MediaStreamTrack, sid: string, receiver?: RTCRtpReceiver,
|
11
|
-
get
|
10
|
+
constructor(mediaTrack: MediaStreamTrack, sid: string, receiver?: RTCRtpReceiver, adaptiveStream?: boolean);
|
11
|
+
get isAdaptiveStream(): boolean;
|
12
12
|
/** @internal */
|
13
13
|
setMuted(muted: boolean): void;
|
14
14
|
attach(): HTMLMediaElement;
|
15
15
|
attach(element: HTMLMediaElement): HTMLMediaElement;
|
16
16
|
detach(): HTMLMediaElement[];
|
17
17
|
detach(element: HTMLMediaElement): HTMLMediaElement;
|
18
|
-
|
19
|
-
|
18
|
+
protected monitorReceiver: () => Promise<void>;
|
19
|
+
private getReceiverStats;
|
20
20
|
private stopObservingElement;
|
21
21
|
private handleVisibilityChanged;
|
22
22
|
private readonly debouncedHandleResize;
|
@@ -1,14 +1,42 @@
|
|
1
1
|
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
+
};
|
2
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
15
|
const ts_debounce_1 = require("ts-debounce");
|
4
16
|
const events_1 = require("../events");
|
17
|
+
const stats_1 = require("../stats");
|
5
18
|
const utils_1 = require("../utils");
|
19
|
+
const RemoteTrack_1 = __importDefault(require("./RemoteTrack"));
|
6
20
|
const Track_1 = require("./Track");
|
7
21
|
const REACTION_DELAY = 100;
|
8
|
-
class RemoteVideoTrack extends
|
9
|
-
constructor(mediaTrack, sid, receiver,
|
10
|
-
super(mediaTrack, Track_1.Track.Kind.Video);
|
22
|
+
class RemoteVideoTrack extends RemoteTrack_1.default {
|
23
|
+
constructor(mediaTrack, sid, receiver, adaptiveStream) {
|
24
|
+
super(mediaTrack, sid, Track_1.Track.Kind.Video, receiver);
|
11
25
|
this.elementInfos = [];
|
26
|
+
this.monitorReceiver = () => __awaiter(this, void 0, void 0, function* () {
|
27
|
+
if (!this.receiver) {
|
28
|
+
this._currentBitrate = 0;
|
29
|
+
return;
|
30
|
+
}
|
31
|
+
const stats = yield this.getReceiverStats();
|
32
|
+
if (stats && this.prevStats && this.receiver) {
|
33
|
+
this._currentBitrate = stats_1.computeBitrate(stats, this.prevStats);
|
34
|
+
}
|
35
|
+
this.prevStats = stats;
|
36
|
+
setTimeout(() => {
|
37
|
+
this.monitorReceiver();
|
38
|
+
}, stats_1.monitorFrequency);
|
39
|
+
});
|
12
40
|
this.handleVisibilityChanged = (entry) => {
|
13
41
|
const { target, isIntersecting } = entry;
|
14
42
|
const elementInfo = this.elementInfos.find((info) => info.element === target);
|
@@ -21,21 +49,15 @@ class RemoteVideoTrack extends Track_1.Track {
|
|
21
49
|
this.debouncedHandleResize = ts_debounce_1.debounce(() => {
|
22
50
|
this.updateDimensions();
|
23
51
|
}, REACTION_DELAY);
|
24
|
-
|
25
|
-
this.sid = sid;
|
26
|
-
this.receiver = receiver;
|
27
|
-
this.autoManaged = autoManaged;
|
52
|
+
this.adaptiveStream = adaptiveStream;
|
28
53
|
}
|
29
|
-
get
|
54
|
+
get isAdaptiveStream() {
|
30
55
|
var _a;
|
31
|
-
return (_a = this.
|
56
|
+
return (_a = this.adaptiveStream) !== null && _a !== void 0 ? _a : false;
|
32
57
|
}
|
33
58
|
/** @internal */
|
34
59
|
setMuted(muted) {
|
35
|
-
|
36
|
-
this.isMuted = muted;
|
37
|
-
this.emit(muted ? events_1.TrackEvent.Muted : events_1.TrackEvent.Unmuted, this);
|
38
|
-
}
|
60
|
+
super.setMuted(muted);
|
39
61
|
this.attachedElements.forEach((element) => {
|
40
62
|
// detach or attach
|
41
63
|
if (muted) {
|
@@ -53,7 +75,7 @@ class RemoteVideoTrack extends Track_1.Track {
|
|
53
75
|
else {
|
54
76
|
super.attach(element);
|
55
77
|
}
|
56
|
-
if (this.
|
78
|
+
if (this.adaptiveStream) {
|
57
79
|
this.elementInfos.push({
|
58
80
|
element,
|
59
81
|
visible: true, // default visible
|
@@ -70,7 +92,7 @@ class RemoteVideoTrack extends Track_1.Track {
|
|
70
92
|
detach(element) {
|
71
93
|
let detachedElements = [];
|
72
94
|
if (element) {
|
73
|
-
|
95
|
+
this.stopObservingElement(element);
|
74
96
|
return super.detach(element);
|
75
97
|
}
|
76
98
|
detachedElements = super.detach();
|
@@ -79,13 +101,35 @@ class RemoteVideoTrack extends Track_1.Track {
|
|
79
101
|
}
|
80
102
|
return detachedElements;
|
81
103
|
}
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
104
|
+
getReceiverStats() {
|
105
|
+
return __awaiter(this, void 0, void 0, function* () {
|
106
|
+
if (!this.receiver) {
|
107
|
+
return;
|
108
|
+
}
|
109
|
+
const stats = yield this.receiver.getStats();
|
110
|
+
let receiverStats;
|
111
|
+
stats.forEach((v) => {
|
112
|
+
if (v.type === 'inbound-rtp') {
|
113
|
+
receiverStats = {
|
114
|
+
type: 'video',
|
115
|
+
framesDecoded: v.framesDecoded,
|
116
|
+
framesDropped: v.framesDropped,
|
117
|
+
framesReceived: v.framesReceived,
|
118
|
+
packetsReceived: v.packetsReceived,
|
119
|
+
packetsLost: v.packetsLost,
|
120
|
+
frameWidth: v.frameWidth,
|
121
|
+
frameHeight: v.frameHeight,
|
122
|
+
pliCount: v.pliCount,
|
123
|
+
firCount: v.firCount,
|
124
|
+
nackCount: v.nackCount,
|
125
|
+
jitter: v.jitter,
|
126
|
+
timestamp: v.timestamp,
|
127
|
+
bytesReceived: v.bytesReceived,
|
128
|
+
};
|
129
|
+
}
|
130
|
+
});
|
131
|
+
return receiverStats;
|
132
|
+
});
|
89
133
|
}
|
90
134
|
stopObservingElement(element) {
|
91
135
|
var _a, _b;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"RemoteVideoTrack.js","sourceRoot":"","sources":["../../../src/room/track/RemoteVideoTrack.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"RemoteVideoTrack.js","sourceRoot":"","sources":["../../../src/room/track/RemoteVideoTrack.ts"],"names":[],"mappings":"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"}
|
@@ -1,17 +1,22 @@
|
|
1
1
|
/// <reference types="node" />
|
2
2
|
import { EventEmitter } from 'events';
|
3
3
|
import { TrackSource, TrackType } from '../../proto/livekit_models';
|
4
|
+
import { StreamState as ProtoStreamState } from '../../proto/livekit_rtc';
|
4
5
|
export declare class Track extends EventEmitter {
|
5
6
|
kind: Track.Kind;
|
6
7
|
mediaStreamTrack: MediaStreamTrack;
|
7
8
|
attachedElements: HTMLMediaElement[];
|
8
9
|
isMuted: boolean;
|
10
|
+
streamState: Track.StreamState;
|
9
11
|
source: Track.Source;
|
10
12
|
/**
|
11
13
|
* sid is set after track is published to server, or if it's a remote track
|
12
14
|
*/
|
13
15
|
sid?: Track.SID;
|
16
|
+
protected _currentBitrate: number;
|
14
17
|
protected constructor(mediaTrack: MediaStreamTrack, kind: Track.Kind);
|
18
|
+
/** current receive bits per second */
|
19
|
+
get currentBitrate(): number;
|
15
20
|
/**
|
16
21
|
* creates a new HTMLAudioElement or HTMLVideoElement, attaches to it, and returns it
|
17
22
|
*/
|
@@ -52,6 +57,11 @@ export declare namespace Track {
|
|
52
57
|
ScreenShareAudio = "screen_share_audio",
|
53
58
|
Unknown = "unknown"
|
54
59
|
}
|
60
|
+
enum StreamState {
|
61
|
+
Active = "active",
|
62
|
+
Paused = "paused",
|
63
|
+
Unknown = "unknown"
|
64
|
+
}
|
55
65
|
interface Dimensions {
|
56
66
|
width: number;
|
57
67
|
height: number;
|
@@ -64,4 +74,6 @@ export declare namespace Track {
|
|
64
74
|
function sourceToProto(s: Source): TrackSource;
|
65
75
|
/** @internal */
|
66
76
|
function sourceFromProto(s: TrackSource): Source;
|
77
|
+
/** @internal */
|
78
|
+
function streamStateFromProto(s: ProtoStreamState): StreamState;
|
67
79
|
}
|
package/dist/room/track/Track.js
CHANGED
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.detachTrack = exports.attachToElement = exports.Track = void 0;
|
4
4
|
const events_1 = require("events");
|
5
5
|
const livekit_models_1 = require("../../proto/livekit_models");
|
6
|
+
const livekit_rtc_1 = require("../../proto/livekit_rtc");
|
6
7
|
const events_2 = require("../events");
|
8
|
+
const utils_1 = require("../utils");
|
7
9
|
// keep old audio elements when detached, we would re-use them since on iOS
|
8
10
|
// Safari tracks which audio elements have been "blessed" by the user.
|
9
11
|
const recycledElements = [];
|
@@ -12,10 +14,16 @@ class Track extends events_1.EventEmitter {
|
|
12
14
|
super();
|
13
15
|
this.attachedElements = [];
|
14
16
|
this.isMuted = false;
|
17
|
+
this.streamState = Track.StreamState.Active;
|
18
|
+
this._currentBitrate = 0;
|
15
19
|
this.kind = kind;
|
16
20
|
this.mediaStreamTrack = mediaTrack;
|
17
21
|
this.source = Track.Source.Unknown;
|
18
22
|
}
|
23
|
+
/** current receive bits per second */
|
24
|
+
get currentBitrate() {
|
25
|
+
return this._currentBitrate;
|
26
|
+
}
|
19
27
|
attach(element) {
|
20
28
|
let elementType = 'audio';
|
21
29
|
if (this.kind === Track.Kind.Video) {
|
@@ -128,6 +136,13 @@ function attachToElement(track, element) {
|
|
128
136
|
mediaStream.removeTrack(et);
|
129
137
|
});
|
130
138
|
mediaStream.addTrack(track);
|
139
|
+
if (utils_1.isFireFox()) {
|
140
|
+
// sometimes firefox doesn't render local video on the first try.
|
141
|
+
// It needs to be re-attached after a timeout.
|
142
|
+
setTimeout(() => {
|
143
|
+
element.srcObject = mediaStream;
|
144
|
+
}, 1);
|
145
|
+
}
|
131
146
|
}
|
132
147
|
exports.attachToElement = attachToElement;
|
133
148
|
/** @internal */
|
@@ -154,6 +169,12 @@ exports.detachTrack = detachTrack;
|
|
154
169
|
Source["ScreenShareAudio"] = "screen_share_audio";
|
155
170
|
Source["Unknown"] = "unknown";
|
156
171
|
})(Source = Track.Source || (Track.Source = {}));
|
172
|
+
let StreamState;
|
173
|
+
(function (StreamState) {
|
174
|
+
StreamState["Active"] = "active";
|
175
|
+
StreamState["Paused"] = "paused";
|
176
|
+
StreamState["Unknown"] = "unknown";
|
177
|
+
})(StreamState = Track.StreamState || (Track.StreamState = {}));
|
157
178
|
/** @internal */
|
158
179
|
function kindToProto(k) {
|
159
180
|
switch (k) {
|
@@ -210,5 +231,17 @@ exports.detachTrack = detachTrack;
|
|
210
231
|
}
|
211
232
|
}
|
212
233
|
Track.sourceFromProto = sourceFromProto;
|
234
|
+
/** @internal */
|
235
|
+
function streamStateFromProto(s) {
|
236
|
+
switch (s) {
|
237
|
+
case livekit_rtc_1.StreamState.ACTIVE:
|
238
|
+
return StreamState.Active;
|
239
|
+
case livekit_rtc_1.StreamState.PAUSED:
|
240
|
+
return StreamState.Paused;
|
241
|
+
default:
|
242
|
+
return StreamState.Unknown;
|
243
|
+
}
|
244
|
+
}
|
245
|
+
Track.streamStateFromProto = streamStateFromProto;
|
213
246
|
})(Track = exports.Track || (exports.Track = {}));
|
214
247
|
//# sourceMappingURL=Track.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Track.js","sourceRoot":"","sources":["../../../src/room/track/Track.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AACtC,+DAAoE;AACpE,sCAAuC;
|
1
|
+
{"version":3,"file":"Track.js","sourceRoot":"","sources":["../../../src/room/track/Track.ts"],"names":[],"mappings":"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"}
|
@@ -6,16 +6,20 @@ import LocalVideoTrack from './LocalVideoTrack';
|
|
6
6
|
import RemoteAudioTrack from './RemoteAudioTrack';
|
7
7
|
import RemoteVideoTrack from './RemoteVideoTrack';
|
8
8
|
import { Track } from './Track';
|
9
|
-
export
|
9
|
+
export declare class TrackPublication extends EventEmitter {
|
10
10
|
kind: Track.Kind;
|
11
11
|
trackName: string;
|
12
12
|
trackSid: Track.SID;
|
13
13
|
track?: Track;
|
14
14
|
source: Track.Source;
|
15
|
+
/** MimeType of the published track */
|
16
|
+
mimeType?: string;
|
15
17
|
/** dimension of the original published stream, video-only */
|
16
18
|
dimensions?: Track.Dimensions;
|
17
19
|
/** true if track was simulcasted to server, video-only */
|
18
20
|
simulcasted?: boolean;
|
21
|
+
/** @internal */
|
22
|
+
trackInfo?: TrackInfo;
|
19
23
|
protected metadataMuted: boolean;
|
20
24
|
constructor(kind: Track.Kind, id: string, name: string);
|
21
25
|
/** @internal */
|
@@ -31,6 +35,15 @@ export default class TrackPublication extends EventEmitter {
|
|
31
35
|
* an [VideoTrack] if this publication holds a video track
|
32
36
|
*/
|
33
37
|
get videoTrack(): LocalVideoTrack | RemoteVideoTrack | undefined;
|
38
|
+
handleMuted: () => void;
|
39
|
+
handleUnmuted: () => void;
|
34
40
|
/** @internal */
|
35
41
|
updateInfo(info: TrackInfo): void;
|
36
42
|
}
|
43
|
+
export declare namespace TrackPublication {
|
44
|
+
enum SubscriptionStatus {
|
45
|
+
Subscribed = "subscribed",
|
46
|
+
NotAllowed = "not_allowed",
|
47
|
+
Unsubscribed = "unsubscribed"
|
48
|
+
}
|
49
|
+
}
|
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.TrackPublication = void 0;
|
6
7
|
const events_1 = require("events");
|
7
8
|
const events_2 = require("../events");
|
8
9
|
const LocalAudioTrack_1 = __importDefault(require("./LocalAudioTrack"));
|
@@ -14,6 +15,12 @@ class TrackPublication extends events_1.EventEmitter {
|
|
14
15
|
constructor(kind, id, name) {
|
15
16
|
super();
|
16
17
|
this.metadataMuted = false;
|
18
|
+
this.handleMuted = () => {
|
19
|
+
this.emit(events_2.TrackEvent.Muted);
|
20
|
+
};
|
21
|
+
this.handleUnmuted = () => {
|
22
|
+
this.emit(events_2.TrackEvent.Unmuted);
|
23
|
+
};
|
17
24
|
this.kind = kind;
|
18
25
|
this.trackSid = id;
|
19
26
|
this.trackName = name;
|
@@ -21,15 +28,15 @@ class TrackPublication extends events_1.EventEmitter {
|
|
21
28
|
}
|
22
29
|
/** @internal */
|
23
30
|
setTrack(track) {
|
31
|
+
if (this.track) {
|
32
|
+
this.track.off(events_2.TrackEvent.Muted, this.handleMuted);
|
33
|
+
this.track.off(events_2.TrackEvent.Unmuted, this.handleUnmuted);
|
34
|
+
}
|
24
35
|
this.track = track;
|
25
36
|
if (track) {
|
26
37
|
// forward events
|
27
|
-
track.on(events_2.TrackEvent.Muted,
|
28
|
-
|
29
|
-
});
|
30
|
-
track.on(events_2.TrackEvent.Unmuted, () => {
|
31
|
-
this.emit(events_2.TrackEvent.Unmuted);
|
32
|
-
});
|
38
|
+
track.on(events_2.TrackEvent.Muted, this.handleMuted);
|
39
|
+
track.on(events_2.TrackEvent.Unmuted, this.handleUnmuted);
|
33
40
|
}
|
34
41
|
}
|
35
42
|
get isMuted() {
|
@@ -62,6 +69,7 @@ class TrackPublication extends events_1.EventEmitter {
|
|
62
69
|
this.trackSid = info.sid;
|
63
70
|
this.trackName = info.name;
|
64
71
|
this.source = Track_1.Track.sourceFromProto(info.source);
|
72
|
+
this.mimeType = info.mimeType;
|
65
73
|
if (this.kind === Track_1.Track.Kind.Video && info.width > 0) {
|
66
74
|
this.dimensions = {
|
67
75
|
width: info.width,
|
@@ -69,7 +77,16 @@ class TrackPublication extends events_1.EventEmitter {
|
|
69
77
|
};
|
70
78
|
this.simulcasted = info.simulcast;
|
71
79
|
}
|
80
|
+
this.trackInfo = info;
|
72
81
|
}
|
73
82
|
}
|
74
|
-
exports.
|
83
|
+
exports.TrackPublication = TrackPublication;
|
84
|
+
(function (TrackPublication) {
|
85
|
+
let SubscriptionStatus;
|
86
|
+
(function (SubscriptionStatus) {
|
87
|
+
SubscriptionStatus["Subscribed"] = "subscribed";
|
88
|
+
SubscriptionStatus["NotAllowed"] = "not_allowed";
|
89
|
+
SubscriptionStatus["Unsubscribed"] = "unsubscribed";
|
90
|
+
})(SubscriptionStatus = TrackPublication.SubscriptionStatus || (TrackPublication.SubscriptionStatus = {}));
|
91
|
+
})(TrackPublication = exports.TrackPublication || (exports.TrackPublication = {}));
|
75
92
|
//# sourceMappingURL=TrackPublication.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"TrackPublication.js","sourceRoot":"","sources":["../../../src/room/track/TrackPublication.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"TrackPublication.js","sourceRoot":"","sources":["../../../src/room/track/TrackPublication.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import LocalAudioTrack from './LocalAudioTrack';
|
2
|
+
import LocalTrack from './LocalTrack';
|
3
|
+
import LocalVideoTrack from './LocalVideoTrack';
|
4
|
+
import { AudioCaptureOptions, CreateLocalTracksOptions, ScreenShareCaptureOptions, VideoCaptureOptions } from './options';
|
5
|
+
/**
|
6
|
+
* Creates a local video and audio track at the same time. When acquiring both
|
7
|
+
* audio and video tracks together, it'll display a single permission prompt to
|
8
|
+
* the user instead of two separate ones.
|
9
|
+
* @param options
|
10
|
+
*/
|
11
|
+
export declare function createLocalTracks(options?: CreateLocalTracksOptions): Promise<Array<LocalTrack>>;
|
12
|
+
/**
|
13
|
+
* Creates a [[LocalVideoTrack]] with getUserMedia()
|
14
|
+
* @param options
|
15
|
+
*/
|
16
|
+
export declare function createLocalVideoTrack(options?: VideoCaptureOptions): Promise<LocalVideoTrack>;
|
17
|
+
export declare function createLocalAudioTrack(options?: AudioCaptureOptions): Promise<LocalAudioTrack>;
|
18
|
+
/**
|
19
|
+
* Creates a screen capture tracks with getDisplayMedia().
|
20
|
+
* A LocalVideoTrack is always created and returned.
|
21
|
+
* If { audio: true }, and the browser supports audio capture, a LocalAudioTrack is also created.
|
22
|
+
*/
|
23
|
+
export declare function createLocalScreenTracks(options?: ScreenShareCaptureOptions): Promise<Array<LocalTrack>>;
|