livekit-client 0.12.2 → 0.13.3
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/.eslintrc.js +1 -0
- package/.github/workflows/publish.yaml +1 -3
- package/README.md +76 -45
- package/dist/api/SignalClient.d.ts +3 -1
- package/dist/api/SignalClient.js +8 -0
- package/dist/api/SignalClient.js.map +1 -1
- package/dist/connect.d.ts +21 -0
- package/dist/connect.js +83 -0
- package/dist/connect.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/options.d.ts +19 -13
- package/dist/options.js.map +1 -1
- package/dist/proto/livekit_models.d.ts +15 -0
- package/dist/proto/livekit_models.js +129 -1
- package/dist/proto/livekit_models.js.map +1 -1
- package/dist/proto/livekit_rtc.d.ts +16 -1
- package/dist/proto/livekit_rtc.js +116 -1
- package/dist/proto/livekit_rtc.js.map +1 -1
- package/dist/room/DeviceManager.d.ts +7 -0
- package/dist/room/DeviceManager.js +62 -0
- package/dist/room/DeviceManager.js.map +1 -0
- package/dist/room/RTCEngine.d.ts +1 -1
- package/dist/room/RTCEngine.js +8 -7
- package/dist/room/RTCEngine.js.map +1 -1
- package/dist/room/Room.d.ts +34 -2
- package/dist/room/Room.js +92 -2
- package/dist/room/Room.js.map +1 -1
- package/dist/room/defaults.d.ts +5 -0
- package/dist/room/defaults.js +29 -0
- package/dist/room/defaults.js.map +1 -0
- package/dist/room/events.d.ts +33 -4
- package/dist/room/events.js +32 -3
- package/dist/room/events.js.map +1 -1
- package/dist/room/participant/LocalParticipant.d.ts +25 -0
- package/dist/room/participant/LocalParticipant.js +162 -45
- package/dist/room/participant/LocalParticipant.js.map +1 -1
- package/dist/room/participant/Participant.d.ts +17 -0
- package/dist/room/participant/Participant.js +53 -0
- package/dist/room/participant/Participant.js.map +1 -1
- package/dist/room/participant/RemoteParticipant.d.ts +2 -0
- package/dist/room/participant/RemoteParticipant.js +23 -3
- package/dist/room/participant/RemoteParticipant.js.map +1 -1
- package/dist/room/track/LocalAudioTrack.d.ts +3 -0
- package/dist/room/track/LocalAudioTrack.js +37 -0
- package/dist/room/track/LocalAudioTrack.js.map +1 -1
- package/dist/room/track/LocalTrack.d.ts +6 -2
- package/dist/room/track/LocalTrack.js +39 -8
- package/dist/room/track/LocalTrack.js.map +1 -1
- package/dist/room/track/LocalTrackPublication.d.ts +6 -3
- package/dist/room/track/LocalTrackPublication.js +21 -2
- package/dist/room/track/LocalTrackPublication.js.map +1 -1
- package/dist/room/track/LocalVideoTrack.d.ts +3 -2
- package/dist/room/track/LocalVideoTrack.js +48 -16
- package/dist/room/track/LocalVideoTrack.js.map +1 -1
- package/dist/room/track/RemoteAudioTrack.d.ts +2 -0
- package/dist/room/track/RemoteAudioTrack.js +8 -0
- package/dist/room/track/RemoteAudioTrack.js.map +1 -1
- package/dist/room/track/RemoteVideoTrack.d.ts +1 -0
- package/dist/room/track/RemoteVideoTrack.js +6 -1
- package/dist/room/track/RemoteVideoTrack.js.map +1 -1
- package/dist/room/track/Track.d.ts +14 -2
- package/dist/room/track/Track.js +42 -0
- package/dist/room/track/Track.js.map +1 -1
- package/dist/room/track/TrackPublication.d.ts +1 -0
- package/dist/room/track/TrackPublication.js +2 -0
- package/dist/room/track/TrackPublication.js.map +1 -1
- package/dist/room/track/create.d.ts +23 -0
- package/dist/{livekit.js → room/track/create.js} +75 -110
- package/dist/room/track/create.js.map +1 -0
- package/dist/room/track/options.d.ts +76 -20
- package/dist/room/track/options.js +11 -6
- package/dist/room/track/options.js.map +1 -1
- package/dist/version.d.ts +2 -2
- package/dist/version.js +2 -2
- package/example/index.html +51 -20
- package/example/sample.ts +200 -87
- package/example/webpack.config.js +8 -2
- package/package.json +2 -2
- package/dist/livekit.d.ts +0 -44
- package/dist/livekit.js.map +0 -1
@@ -12,91 +12,80 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
13
|
};
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
-
exports.
|
16
|
-
const
|
17
|
-
const
|
15
|
+
exports.createLocalScreenTracks = exports.createLocalAudioTrack = exports.createLocalVideoTrack = exports.createLocalTracks = exports.isVideoCaptureAllowed = exports.isAudioCaptureAllowed = void 0;
|
16
|
+
const errors_1 = require("../errors");
|
17
|
+
const LocalAudioTrack_1 = __importDefault(require("./LocalAudioTrack"));
|
18
|
+
const LocalTrack_1 = __importDefault(require("./LocalTrack"));
|
19
|
+
const LocalVideoTrack_1 = __importDefault(require("./LocalVideoTrack"));
|
18
20
|
const options_1 = require("./options");
|
19
|
-
const
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
21
|
+
const Track_1 = require("./Track");
|
22
|
+
let audioAllowed;
|
23
|
+
function isAudioCaptureAllowed() {
|
24
|
+
return audioAllowed;
|
25
|
+
}
|
26
|
+
exports.isAudioCaptureAllowed = isAudioCaptureAllowed;
|
27
|
+
let videoAllowed;
|
28
|
+
function isVideoCaptureAllowed() {
|
29
|
+
return videoAllowed;
|
30
|
+
}
|
31
|
+
exports.isVideoCaptureAllowed = isVideoCaptureAllowed;
|
28
32
|
/**
|
29
|
-
*
|
30
|
-
*
|
31
|
-
* ```typescript
|
32
|
-
* connect('wss://myhost.livekit.io', token, {
|
33
|
-
* // publish audio and video tracks on joining
|
34
|
-
* audio: true,
|
35
|
-
* video: {
|
36
|
-
* resolution: VideoPresets.hd,
|
37
|
-
* facingMode: {
|
38
|
-
* ideal: "user",
|
39
|
-
* }
|
40
|
-
* }
|
41
|
-
* })
|
42
|
-
* ```
|
43
|
-
* @param url URL to LiveKit server
|
44
|
-
* @param token AccessToken, a JWT token that includes authentication and room details
|
33
|
+
* creates a local video and audio track at the same time
|
45
34
|
* @param options
|
46
35
|
*/
|
47
|
-
function
|
48
|
-
var _a;
|
36
|
+
function createLocalTracks(options) {
|
49
37
|
return __awaiter(this, void 0, void 0, function* () {
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
config.iceServers = options.iceServers;
|
61
|
-
}
|
62
|
-
const client = new SignalClient_1.WSSignalClient();
|
63
|
-
const room = new Room_1.default(client, config);
|
64
|
-
// connect to room
|
65
|
-
yield room.connect(url, token, {
|
66
|
-
autoSubscribe: options === null || options === void 0 ? void 0 : options.autoSubscribe,
|
67
|
-
});
|
68
|
-
// add tracks if available
|
69
|
-
let { tracks } = options;
|
70
|
-
if (!tracks) {
|
71
|
-
if (options.audio || options.video) {
|
72
|
-
tracks = yield createLocalTracks({
|
73
|
-
audio: options.audio,
|
74
|
-
video: options.video,
|
75
|
-
});
|
76
|
-
}
|
38
|
+
if (!options)
|
39
|
+
options = {};
|
40
|
+
if (options.audio !== false)
|
41
|
+
options.audio = {};
|
42
|
+
if (options.video !== false)
|
43
|
+
options.video = {};
|
44
|
+
const constraints = LocalTrack_1.default.constraintsForOptions(options);
|
45
|
+
let stream;
|
46
|
+
try {
|
47
|
+
stream = yield navigator.mediaDevices.getUserMedia(constraints);
|
77
48
|
}
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
const trackOptions = {};
|
83
|
-
if (track.kind === Track_1.Track.Kind.Video.toString()
|
84
|
-
|| track.kind === Track_1.Track.Kind.Video) {
|
85
|
-
trackOptions.videoCodec = options === null || options === void 0 ? void 0 : options.videoCodec;
|
86
|
-
trackOptions.videoEncoding = options === null || options === void 0 ? void 0 : options.videoEncoding;
|
87
|
-
trackOptions.simulcast = options === null || options === void 0 ? void 0 : options.simulcast;
|
49
|
+
catch (e) {
|
50
|
+
if (e instanceof DOMException && e.name === 'NotAllowedError') {
|
51
|
+
if (options.audio) {
|
52
|
+
audioAllowed = false;
|
88
53
|
}
|
89
|
-
|
90
|
-
|
91
|
-
trackOptions.audioBitrate = options.audioBitrate;
|
54
|
+
if (options.video) {
|
55
|
+
videoAllowed = false;
|
92
56
|
}
|
93
|
-
yield room.localParticipant.publishTrack(track, trackOptions);
|
94
57
|
}
|
58
|
+
throw e;
|
95
59
|
}
|
96
|
-
|
60
|
+
if (options.audio) {
|
61
|
+
audioAllowed = true;
|
62
|
+
}
|
63
|
+
if (options.video) {
|
64
|
+
videoAllowed = true;
|
65
|
+
}
|
66
|
+
return stream.getTracks().map((mediaStreamTrack) => {
|
67
|
+
const isAudio = mediaStreamTrack.kind === 'audio';
|
68
|
+
let trackOptions = isAudio ? options.audio : options.video;
|
69
|
+
if (typeof trackOptions === 'boolean' || !trackOptions) {
|
70
|
+
trackOptions = {};
|
71
|
+
}
|
72
|
+
let trackConstraints;
|
73
|
+
const conOrBool = isAudio ? constraints.audio : constraints.video;
|
74
|
+
if (typeof conOrBool !== 'boolean') {
|
75
|
+
trackConstraints = conOrBool;
|
76
|
+
}
|
77
|
+
const track = createLocalTrack(mediaStreamTrack, trackOptions === null || trackOptions === void 0 ? void 0 : trackOptions.name, trackConstraints);
|
78
|
+
if (track.kind === Track_1.Track.Kind.Video) {
|
79
|
+
track.source = Track_1.Track.Source.Camera;
|
80
|
+
}
|
81
|
+
else if (track.kind === Track_1.Track.Kind.Audio) {
|
82
|
+
track.source = Track_1.Track.Source.Microphone;
|
83
|
+
}
|
84
|
+
return track;
|
85
|
+
});
|
97
86
|
});
|
98
87
|
}
|
99
|
-
exports.
|
88
|
+
exports.createLocalTracks = createLocalTracks;
|
100
89
|
/**
|
101
90
|
* Creates a [[LocalVideoTrack]] with getUserMedia()
|
102
91
|
* @param options
|
@@ -136,24 +125,28 @@ function createLocalScreenTracks(options) {
|
|
136
125
|
options.name = 'screen';
|
137
126
|
}
|
138
127
|
if (options.resolution === undefined) {
|
139
|
-
options.resolution =
|
128
|
+
options.resolution = options_1.VideoPresets.fhd.resolution;
|
129
|
+
}
|
130
|
+
let videoConstraints = true;
|
131
|
+
if (options.resolution) {
|
132
|
+
videoConstraints = {
|
133
|
+
width: options.resolution.width,
|
134
|
+
height: options.resolution.height,
|
135
|
+
};
|
140
136
|
}
|
141
137
|
// typescript definition is missing getDisplayMedia: https://github.com/microsoft/TypeScript/issues/33232
|
142
138
|
// @ts-ignore
|
143
139
|
const stream = yield navigator.mediaDevices.getDisplayMedia({
|
144
140
|
audio: (_a = options.audio) !== null && _a !== void 0 ? _a : false,
|
145
|
-
video:
|
146
|
-
width: options.resolution.width,
|
147
|
-
height: options.resolution.height,
|
148
|
-
},
|
141
|
+
video: videoConstraints,
|
149
142
|
});
|
150
143
|
const tracks = stream.getVideoTracks();
|
151
144
|
if (tracks.length === 0) {
|
152
145
|
throw new errors_1.TrackInvalidError('no video track found');
|
153
146
|
}
|
154
|
-
const
|
155
|
-
|
156
|
-
];
|
147
|
+
const screenVideo = new LocalVideoTrack_1.default(tracks[0], options.name);
|
148
|
+
screenVideo.source = Track_1.Track.Source.ScreenShare;
|
149
|
+
const localTracks = [screenVideo];
|
157
150
|
if (stream.getAudioTracks().length > 0) {
|
158
151
|
localTracks.push(new LocalAudioTrack_1.default(stream.getAudioTracks()[0], options.name));
|
159
152
|
}
|
@@ -161,34 +154,6 @@ function createLocalScreenTracks(options) {
|
|
161
154
|
});
|
162
155
|
}
|
163
156
|
exports.createLocalScreenTracks = createLocalScreenTracks;
|
164
|
-
/**
|
165
|
-
* creates a local video and audio track at the same time
|
166
|
-
* @param options
|
167
|
-
*/
|
168
|
-
function createLocalTracks(options) {
|
169
|
-
return __awaiter(this, void 0, void 0, function* () {
|
170
|
-
if (!options)
|
171
|
-
options = {};
|
172
|
-
if (options.audio === undefined)
|
173
|
-
options.audio = {};
|
174
|
-
const constraints = LocalTrack_1.default.constraintsForOptions(options);
|
175
|
-
const stream = yield navigator.mediaDevices.getUserMedia(constraints);
|
176
|
-
return stream.getTracks().map((mediaStreamTrack) => {
|
177
|
-
const isAudio = mediaStreamTrack.kind === 'audio';
|
178
|
-
let trackOptions = isAudio ? options.audio : options.video;
|
179
|
-
if (typeof trackOptions === 'boolean' || !trackOptions) {
|
180
|
-
trackOptions = {};
|
181
|
-
}
|
182
|
-
let trackConstraints;
|
183
|
-
const conOrBool = isAudio ? constraints.audio : constraints.video;
|
184
|
-
if (typeof conOrBool !== 'boolean') {
|
185
|
-
trackConstraints = conOrBool;
|
186
|
-
}
|
187
|
-
return createLocalTrack(mediaStreamTrack, trackOptions === null || trackOptions === void 0 ? void 0 : trackOptions.name, trackConstraints);
|
188
|
-
});
|
189
|
-
});
|
190
|
-
}
|
191
|
-
exports.createLocalTracks = createLocalTracks;
|
192
157
|
/** @internal */
|
193
158
|
function createLocalTrack(mediaStreamTrack, name, constraints) {
|
194
159
|
switch (mediaStreamTrack.kind) {
|
@@ -200,4 +165,4 @@ function createLocalTrack(mediaStreamTrack, name, constraints) {
|
|
200
165
|
throw new errors_1.TrackInvalidError(`unsupported track type: ${mediaStreamTrack.kind}`);
|
201
166
|
}
|
202
167
|
}
|
203
|
-
//# sourceMappingURL=
|
168
|
+
//# sourceMappingURL=create.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/room/track/create.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sCAA8C;AAC9C,wEAAgD;AAChD,8DAAsC;AACtC,wEAAgD;AAChD,uCAGmB;AACnB,mCAAgC;AAEhC,IAAI,YAAiC,CAAC;AACtC,SAAgB,qBAAqB;IACnC,OAAO,YAAY,CAAC;AACtB,CAAC;AAFD,sDAEC;AAED,IAAI,YAAiC,CAAC;AACtC,SAAgB,qBAAqB;IACnC,OAAO,YAAY,CAAC;AACtB,CAAC;AAFD,sDAEC;AAED;;;GAGG;AACH,SAAsB,iBAAiB,CACrC,OAAkC;;QAElC,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK;YAAE,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;QAChD,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK;YAAE,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;QAEhD,MAAM,WAAW,GAAG,oBAAU,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,MAAmB,CAAC;QACxB,IAAI;YACF,MAAM,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,YAAY,CAChD,WAAW,CACZ,CAAC;SACH;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,YAAY,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,EAAE;gBAC7D,IAAI,OAAO,CAAC,KAAK,EAAE;oBACjB,YAAY,GAAG,KAAK,CAAC;iBACtB;gBACD,IAAI,OAAO,CAAC,KAAK,EAAE;oBACjB,YAAY,GAAG,KAAK,CAAC;iBACtB;aACF;YACD,MAAM,CAAC,CAAC;SACT;QAED,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,YAAY,GAAG,IAAI,CAAC;SACrB;QACD,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,YAAY,GAAG,IAAI,CAAC;SACrB;QAED,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,EAAE;YACjD,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,KAAK,OAAO,CAAC;YAClD,IAAI,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,OAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,OAAQ,CAAC,KAAK,CAAC;YAC7D,IAAI,OAAO,YAAY,KAAK,SAAS,IAAI,CAAC,YAAY,EAAE;gBACtD,YAAY,GAAG,EAAE,CAAC;aACnB;YACD,IAAI,gBAAmD,CAAC;YACxD,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC;YAClE,IAAI,OAAO,SAAS,KAAK,SAAS,EAAE;gBAClC,gBAAgB,GAAG,SAAS,CAAC;aAC9B;YACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,gBAAgB,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;YACvF,IAAI,KAAK,CAAC,IAAI,KAAK,aAAK,CAAC,IAAI,CAAC,KAAK,EAAE;gBACnC,KAAK,CAAC,MAAM,GAAG,aAAK,CAAC,MAAM,CAAC,MAAM,CAAC;aACpC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,aAAK,CAAC,IAAI,CAAC,KAAK,EAAE;gBAC1C,KAAK,CAAC,MAAM,GAAG,aAAK,CAAC,MAAM,CAAC,UAAU,CAAC;aACxC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;CAAA;AAnDD,8CAmDC;AAED;;;GAGG;AACH,SAAsB,qBAAqB,CACzC,OAAiC;;QAEjC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;YACrC,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,OAAO;SACf,CAAC,CAAC;QACH,OAAwB,MAAM,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;CAAA;AARD,sDAQC;AAED,SAAsB,qBAAqB,CACzC,OAAiC;;QAEjC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;YACrC,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;QACH,OAAwB,MAAM,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;CAAA;AARD,sDAQC;AAED;;;;GAIG;AACH,SAAsB,uBAAuB,CAC3C,OAAkC;;;QAElC,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB,OAAO,GAAG,EAAE,CAAC;SACd;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;YAC9B,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;SACzB;QACD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE;YACpC,OAAO,CAAC,UAAU,GAAG,sBAAY,CAAC,GAAG,CAAC,UAAU,CAAC;SAClD;QAED,IAAI,gBAAgB,GAAoC,IAAI,CAAC;QAC7D,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,gBAAgB,GAAG;gBACjB,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK;gBAC/B,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM;aAClC,CAAC;SACH;QACD,yGAAyG;QACzG,aAAa;QACb,MAAM,MAAM,GAAgB,MAAM,SAAS,CAAC,YAAY,CAAC,eAAe,CAAC;YACvE,KAAK,EAAE,MAAA,OAAO,CAAC,KAAK,mCAAI,KAAK;YAC7B,KAAK,EAAE,gBAAgB;SACxB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,MAAM,IAAI,0BAAiB,CAAC,sBAAsB,CAAC,CAAC;SACrD;QACD,MAAM,WAAW,GAAG,IAAI,yBAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACjE,WAAW,CAAC,MAAM,GAAG,aAAK,CAAC,MAAM,CAAC,WAAW,CAAC;QAC9C,MAAM,WAAW,GAAsB,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;YACtC,WAAW,CAAC,IAAI,CAAC,IAAI,yBAAe,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;SACjF;QACD,OAAO,WAAW,CAAC;;CACpB;AAtCD,0DAsCC;AAED,gBAAgB;AAChB,SAAS,gBAAgB,CACvB,gBAAkC,EAClC,IAAa,EACb,WAAmC;IAEnC,QAAQ,gBAAgB,CAAC,IAAI,EAAE;QAC7B,KAAK,OAAO;YACV,OAAO,IAAI,yBAAe,CAAC,gBAAgB,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QAClE,KAAK,OAAO;YACV,OAAO,IAAI,yBAAe,CAAC,gBAAgB,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QAClE;YACE,MAAM,IAAI,0BAAiB,CACzB,2BAA2B,gBAAgB,CAAC,IAAI,EAAE,CACnD,CAAC;KACL;AACH,CAAC"}
|
@@ -1,16 +1,13 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
*/
|
4
|
-
export interface TrackPublishOptions {
|
1
|
+
import { Track } from './Track';
|
2
|
+
export interface TrackPublishDefaults {
|
5
3
|
/**
|
6
|
-
*
|
4
|
+
* encoding parameters for camera track
|
7
5
|
*/
|
8
|
-
|
6
|
+
videoEncoding?: VideoEncoding;
|
9
7
|
/**
|
10
|
-
* encoding parameters
|
11
|
-
* encoding based on bitrate
|
8
|
+
* encoding parameters for screen share track
|
12
9
|
*/
|
13
|
-
|
10
|
+
screenShareEncoding?: VideoEncoding;
|
14
11
|
/**
|
15
12
|
* codec, defaults to vp8
|
16
13
|
*/
|
@@ -19,12 +16,64 @@ export interface TrackPublishOptions {
|
|
19
16
|
* max audio bitrate, defaults to [[AudioPresets.speech]]
|
20
17
|
*/
|
21
18
|
audioBitrate?: number;
|
19
|
+
/**
|
20
|
+
* dtx (Discontinuous Tranmission of audio), defaults to true
|
21
|
+
*/
|
22
|
+
dtx?: boolean;
|
22
23
|
/**
|
23
24
|
* use simulcast, defaults to false.
|
24
|
-
* When using simulcast, LiveKit will publish up to three version of the stream
|
25
|
+
* When using simulcast, LiveKit will publish up to three version of the stream
|
26
|
+
* at various resolutions.
|
25
27
|
*/
|
26
28
|
simulcast?: boolean;
|
27
29
|
}
|
30
|
+
export interface TrackCaptureDefaults {
|
31
|
+
/**
|
32
|
+
* default device to use for microphone capture
|
33
|
+
*/
|
34
|
+
audioDeviceId?: string;
|
35
|
+
/**
|
36
|
+
* specifies whether automatic gain control is preferred, defaults to true
|
37
|
+
*/
|
38
|
+
autoGainControl?: boolean;
|
39
|
+
/**
|
40
|
+
* the channel count or range of channel counts which are acceptable and/or required
|
41
|
+
*/
|
42
|
+
channelCount?: number;
|
43
|
+
/**
|
44
|
+
* whether or not echo cancellation is preferred, defaults to true
|
45
|
+
*/
|
46
|
+
echoCancellation?: boolean;
|
47
|
+
/**
|
48
|
+
* whether noise suppression is preferred, defaults to true
|
49
|
+
*/
|
50
|
+
noiseSuppression?: boolean;
|
51
|
+
/**
|
52
|
+
* set if a particular video facing mode is preferred
|
53
|
+
*/
|
54
|
+
videoFacingMode?: 'user' | 'environment' | 'left' | 'right';
|
55
|
+
/**
|
56
|
+
* default device to use for camera capture
|
57
|
+
*/
|
58
|
+
videoDeviceId?: string;
|
59
|
+
/**
|
60
|
+
* default video capture resolution
|
61
|
+
*/
|
62
|
+
videoResolution?: VideoResolution;
|
63
|
+
}
|
64
|
+
/**
|
65
|
+
* Options when publishing tracks
|
66
|
+
*/
|
67
|
+
export interface TrackPublishOptions extends TrackPublishDefaults {
|
68
|
+
/**
|
69
|
+
* set a track name
|
70
|
+
*/
|
71
|
+
name?: string;
|
72
|
+
/**
|
73
|
+
* Source of track, camera, microphone, or screen
|
74
|
+
*/
|
75
|
+
source?: Track.Source;
|
76
|
+
}
|
28
77
|
export interface CreateLocalTracksOptions {
|
29
78
|
/**
|
30
79
|
* audio track options, true to create with defaults. false if audio shouldn't be created
|
@@ -52,7 +101,7 @@ export interface CreateVideoTrackOptions extends CreateLocalTrackOptions {
|
|
52
101
|
* [valid options](https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints/facingMode)
|
53
102
|
*/
|
54
103
|
facingMode?: ConstrainDOMString;
|
55
|
-
resolution?:
|
104
|
+
resolution?: VideoResolution;
|
56
105
|
}
|
57
106
|
export interface CreateScreenTrackOptions {
|
58
107
|
/** name of track, defaults to "screen" */
|
@@ -63,7 +112,7 @@ export interface CreateScreenTrackOptions {
|
|
63
112
|
*/
|
64
113
|
audio?: boolean;
|
65
114
|
/** capture resolution, defaults to full HD */
|
66
|
-
resolution?:
|
115
|
+
resolution?: VideoResolution;
|
67
116
|
}
|
68
117
|
export interface CreateAudioTrackOptions extends CreateLocalTrackOptions {
|
69
118
|
/**
|
@@ -100,8 +149,8 @@ export interface CreateAudioTrackOptions extends CreateLocalTrackOptions {
|
|
100
149
|
*
|
101
150
|
* ```typescript
|
102
151
|
* {
|
103
|
-
* width:
|
104
|
-
* height:
|
152
|
+
* width: 960,
|
153
|
+
* height: 540,
|
105
154
|
* frameRate: {
|
106
155
|
* ideal: 30,
|
107
156
|
* max: 60,
|
@@ -109,21 +158,21 @@ export interface CreateAudioTrackOptions extends CreateLocalTrackOptions {
|
|
109
158
|
* }
|
110
159
|
* ```
|
111
160
|
*/
|
112
|
-
export interface
|
113
|
-
width:
|
114
|
-
height:
|
115
|
-
frameRate?:
|
161
|
+
export interface VideoResolution {
|
162
|
+
width: number;
|
163
|
+
height: number;
|
164
|
+
frameRate?: number;
|
116
165
|
}
|
117
166
|
export interface VideoEncoding {
|
118
167
|
maxBitrate: number;
|
119
|
-
maxFramerate
|
168
|
+
maxFramerate?: number;
|
120
169
|
}
|
121
170
|
export declare class VideoPreset {
|
122
171
|
encoding: VideoEncoding;
|
123
172
|
width: number;
|
124
173
|
height: number;
|
125
174
|
constructor(width: number, height: number, maxBitrate: number, maxFramerate: number);
|
126
|
-
get resolution():
|
175
|
+
get resolution(): VideoResolution;
|
127
176
|
}
|
128
177
|
export interface AudioPreset {
|
129
178
|
maxBitrate: number;
|
@@ -154,3 +203,10 @@ export declare const VideoPresets43: {
|
|
154
203
|
hd: VideoPreset;
|
155
204
|
fhd: VideoPreset;
|
156
205
|
};
|
206
|
+
export declare const ScreenSharePresets: {
|
207
|
+
vga: VideoPreset;
|
208
|
+
hd_8: VideoPreset;
|
209
|
+
hd_15: VideoPreset;
|
210
|
+
fhd_15: VideoPreset;
|
211
|
+
fhd_30: VideoPreset;
|
212
|
+
};
|
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.VideoPresets43 = exports.VideoPresets = exports.AudioPresets = exports.VideoPreset = void 0;
|
3
|
+
exports.ScreenSharePresets = exports.VideoPresets43 = exports.VideoPresets = exports.AudioPresets = exports.VideoPreset = void 0;
|
4
4
|
class VideoPreset {
|
5
5
|
constructor(width, height, maxBitrate, maxFramerate) {
|
6
6
|
this.width = width;
|
@@ -12,11 +12,9 @@ class VideoPreset {
|
|
12
12
|
}
|
13
13
|
get resolution() {
|
14
14
|
return {
|
15
|
-
width:
|
16
|
-
height:
|
17
|
-
frameRate:
|
18
|
-
ideal: this.encoding.maxFramerate,
|
19
|
-
},
|
15
|
+
width: this.width,
|
16
|
+
height: this.height,
|
17
|
+
frameRate: this.encoding.maxFramerate,
|
20
18
|
};
|
21
19
|
}
|
22
20
|
}
|
@@ -53,4 +51,11 @@ exports.VideoPresets43 = {
|
|
53
51
|
hd: new VideoPreset(960, 720, 2000000, 30),
|
54
52
|
fhd: new VideoPreset(1440, 1080, 3200000, 30),
|
55
53
|
};
|
54
|
+
exports.ScreenSharePresets = {
|
55
|
+
vga: new VideoPreset(640, 360, 200000, 3),
|
56
|
+
hd_8: new VideoPreset(1280, 720, 400000, 5),
|
57
|
+
hd_15: new VideoPreset(1280, 720, 1250000, 15),
|
58
|
+
fhd_15: new VideoPreset(1920, 1080, 2000000, 15),
|
59
|
+
fhd_30: new VideoPreset(1920, 1080, 4000000, 30),
|
60
|
+
};
|
56
61
|
//# sourceMappingURL=options.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/room/track/options.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/room/track/options.ts"],"names":[],"mappings":";;;AA4MA,MAAa,WAAW;IAOtB,YAAY,KAAa,EAAE,MAAc,EAAE,UAAkB,EAAE,YAAoB;QACjF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG;YACd,UAAU;YACV,YAAY;SACb,CAAC;IACJ,CAAC;IAED,IAAI,UAAU;QACZ,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;SACtC,CAAC;IACJ,CAAC;CACF;AAvBD,kCAuBC;AAQD,IAAiB,YAAY,CAU5B;AAVD,WAAiB,YAAY;IACd,sBAAS,GAAgB;QACpC,UAAU,EAAE,KAAM;KACnB,CAAC;IACW,mBAAM,GAAgB;QACjC,UAAU,EAAE,KAAM;KACnB,CAAC;IACW,kBAAK,GAAgB;QAChC,UAAU,EAAE,KAAM;KACnB,CAAC;AACJ,CAAC,EAVgB,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAU5B;AAED;;GAEG;AACU,QAAA,YAAY,GAAG;IAC1B,IAAI,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAO,EAAE,EAAE,CAAC;IAC5C,GAAG,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAO,EAAE,EAAE,CAAC;IAC3C,GAAG,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAO,EAAE,EAAE,CAAC;IAC3C,EAAE,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,OAAS,EAAE,EAAE,CAAC;IAC7C,GAAG,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAS,EAAE,EAAE,CAAC;CAChD,CAAC;AAEF;;GAEG;AACU,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAO,EAAE,EAAE,CAAC;IAC5C,GAAG,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAO,EAAE,EAAE,CAAC;IAC3C,GAAG,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAO,EAAE,EAAE,CAAC;IAC3C,EAAE,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,OAAS,EAAE,EAAE,CAAC;IAC5C,GAAG,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAS,EAAE,EAAE,CAAC;CAChD,CAAC;AAEW,QAAA,kBAAkB,GAAG;IAChC,GAAG,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAO,EAAE,CAAC,CAAC;IAC1C,IAAI,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,MAAO,EAAE,CAAC,CAAC;IAC5C,KAAK,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,OAAS,EAAE,EAAE,CAAC;IAChD,MAAM,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAS,EAAE,EAAE,CAAC;IAClD,MAAM,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAS,EAAE,EAAE,CAAC;CACnD,CAAC"}
|
package/dist/version.d.ts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export declare const version = "0.
|
2
|
-
export declare const protocolVersion =
|
1
|
+
export declare const version = "0.13.3";
|
2
|
+
export declare const protocolVersion = 4;
|
package/dist/version.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.protocolVersion = exports.version = void 0;
|
4
|
-
exports.version = '0.
|
5
|
-
exports.protocolVersion =
|
4
|
+
exports.version = '0.13.3';
|
5
|
+
exports.protocolVersion = 4;
|
6
6
|
//# sourceMappingURL=version.js.map
|
package/example/index.html
CHANGED
@@ -52,7 +52,19 @@
|
|
52
52
|
</div>
|
53
53
|
|
54
54
|
<div class="form-group row">
|
55
|
-
<div class="col-md-
|
55
|
+
<div class="col-md-2 offset-md-1">
|
56
|
+
<div class="form-check">
|
57
|
+
<input
|
58
|
+
type="checkbox"
|
59
|
+
class="form-check-input"
|
60
|
+
id="publish-option"
|
61
|
+
checked
|
62
|
+
/>
|
63
|
+
<label for="checkbox" class="form-check-label">
|
64
|
+
Publish
|
65
|
+
</label>
|
66
|
+
</div>
|
67
|
+
</div>
|
56
68
|
<div class="col-md-2">
|
57
69
|
<div class="form-check">
|
58
70
|
<input
|
@@ -84,44 +96,44 @@
|
|
84
96
|
<div class="col-md-2">
|
85
97
|
<button
|
86
98
|
id="connect-button"
|
87
|
-
class="btn btn-primary"
|
99
|
+
class="btn btn-primary mt-1"
|
88
100
|
type="button"
|
89
101
|
onclick="connectWithFormInput()"
|
90
102
|
>
|
91
103
|
Connect
|
92
104
|
</button>
|
93
105
|
</div>
|
94
|
-
<div class="col-md-
|
106
|
+
<div class="col-md-10">
|
95
107
|
<button
|
96
|
-
id="
|
97
|
-
class="btn btn-secondary"
|
108
|
+
id="toggle-audio-button"
|
109
|
+
class="btn btn-secondary mt-1"
|
98
110
|
disabled
|
99
111
|
type="button"
|
100
|
-
onclick="
|
112
|
+
onclick="toggleAudio()"
|
101
113
|
>
|
102
|
-
|
114
|
+
Enable Audio
|
103
115
|
</button>
|
104
116
|
<button
|
105
|
-
id="
|
106
|
-
class="btn btn-secondary"
|
117
|
+
id="toggle-video-button"
|
118
|
+
class="btn btn-secondary mt-1"
|
107
119
|
disabled
|
108
120
|
type="button"
|
109
|
-
onclick="
|
121
|
+
onclick="toggleVideo()"
|
110
122
|
>
|
111
|
-
|
123
|
+
Enable Video
|
112
124
|
</button>
|
113
125
|
<button
|
114
126
|
id="flip-video-button"
|
115
|
-
class="btn btn-secondary"
|
127
|
+
class="btn btn-secondary mt-1"
|
116
128
|
disabled
|
117
129
|
type="button"
|
118
130
|
onclick="flipVideo()"
|
119
131
|
>
|
120
|
-
|
132
|
+
Back Camera
|
121
133
|
</button>
|
122
134
|
<button
|
123
135
|
id="share-screen-button"
|
124
|
-
class="btn btn-secondary"
|
136
|
+
class="btn btn-secondary mt-1"
|
125
137
|
disabled
|
126
138
|
type="button"
|
127
139
|
onclick="shareScreen()"
|
@@ -130,16 +142,16 @@
|
|
130
142
|
</button>
|
131
143
|
<button
|
132
144
|
id="disconnect-ws-button"
|
133
|
-
class="btn btn-warning"
|
145
|
+
class="btn btn-warning mt-1"
|
134
146
|
disabled
|
135
147
|
type="button"
|
136
148
|
onclick="disconnectSignal()"
|
137
149
|
>
|
138
|
-
WS
|
150
|
+
WS Reconnect
|
139
151
|
</button>
|
140
152
|
<button
|
141
153
|
id="disconnect-room-button"
|
142
|
-
class="btn btn-danger"
|
154
|
+
class="btn btn-danger mt-1"
|
143
155
|
disabled
|
144
156
|
type="button"
|
145
157
|
onclick="disconnectRoom()"
|
@@ -148,16 +160,35 @@
|
|
148
160
|
</button>
|
149
161
|
<button
|
150
162
|
id="start-audio-button"
|
151
|
-
class="btn btn-secondary"
|
163
|
+
class="btn btn-secondary mt-1"
|
152
164
|
disabled
|
153
165
|
type="button"
|
154
166
|
onclick="startAudio()"
|
155
167
|
>
|
156
|
-
Enable
|
168
|
+
Enable Audio
|
157
169
|
</button>
|
158
170
|
</div>
|
159
171
|
</div>
|
160
172
|
|
173
|
+
<!-- video devices -->
|
174
|
+
<div class="form-group row">
|
175
|
+
<div class="col-md-4">
|
176
|
+
<select id="video-input" class="custom-select" onchange="handleDeviceSelected(event)">
|
177
|
+
<option selected>Video Input (default)</option>
|
178
|
+
</select>
|
179
|
+
</div>
|
180
|
+
<div class="col-md-4">
|
181
|
+
<select id="audio-input" class="custom-select" onchange="handleDeviceSelected(event)">
|
182
|
+
<option selected>Audio Input (default)</option>
|
183
|
+
</select>
|
184
|
+
</div>
|
185
|
+
<div class="col-md-4">
|
186
|
+
<select id="audio-output" class="custom-select" onchange="handleDeviceSelected(event)">
|
187
|
+
<option selected>Audio Output (default)</option>
|
188
|
+
</select>
|
189
|
+
</div>
|
190
|
+
</div>
|
191
|
+
|
161
192
|
<div class="form-group row">
|
162
193
|
<textarea
|
163
194
|
class="form-control col-md-12"
|
@@ -174,7 +205,7 @@
|
|
174
205
|
<textarea class="form-control" id="chat" rows="15"></textarea>
|
175
206
|
</div>
|
176
207
|
</div>
|
177
|
-
<div class="row">
|
208
|
+
<div class="row mt-1">
|
178
209
|
<div class="col-md-10">
|
179
210
|
<input type="text" class="form-control" id="entry" />
|
180
211
|
</div>
|