livekit-client 0.14.3 → 0.15.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/.github/workflows/{lint.yaml → test.yaml} +7 -4
- package/.gitmodules +3 -0
- package/README.md +46 -14
- package/dist/api/SignalClient.d.ts +12 -32
- package/dist/api/SignalClient.js +59 -8
- package/dist/api/SignalClient.js.map +1 -1
- package/dist/connect.d.ts +1 -1
- package/dist/connect.js +71 -73
- package/dist/connect.js.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.js +8 -5
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +10 -0
- package/dist/logger.js +15 -0
- package/dist/logger.js.map +1 -1
- package/dist/options.d.ts +83 -19
- package/dist/options.js +0 -10
- package/dist/options.js.map +1 -1
- package/dist/proto/livekit_models.d.ts +45 -1
- package/dist/proto/livekit_models.js +333 -4
- package/dist/proto/livekit_models.js.map +1 -1
- package/dist/proto/livekit_rtc.d.ts +148 -7
- package/dist/proto/livekit_rtc.js +1047 -30
- 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 -2
- package/dist/room/RTCEngine.js +36 -38
- package/dist/room/RTCEngine.js.map +1 -1
- package/dist/room/Room.d.ts +23 -17
- package/dist/room/Room.js +205 -71
- package/dist/room/Room.js.map +1 -1
- package/dist/room/events.d.ts +143 -14
- package/dist/room/events.js +142 -13
- package/dist/room/events.js.map +1 -1
- package/dist/room/participant/LocalParticipant.d.ts +53 -13
- package/dist/room/participant/LocalParticipant.js +244 -169
- package/dist/room/participant/LocalParticipant.js.map +1 -1
- package/dist/room/participant/Participant.d.ts +3 -1
- package/dist/room/participant/Participant.js +3 -1
- 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 +10 -15
- package/dist/room/participant/RemoteParticipant.js.map +1 -1
- package/dist/room/participant/publishUtils.d.ts +11 -0
- package/dist/room/participant/publishUtils.js +148 -0
- package/dist/room/participant/publishUtils.js.map +1 -0
- package/dist/room/participant/publishUtils.test.d.ts +1 -0
- package/dist/room/participant/publishUtils.test.js +79 -0
- package/dist/room/participant/publishUtils.test.js.map +1 -0
- 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 +8 -3
- package/dist/room/track/LocalAudioTrack.js +49 -3
- package/dist/room/track/LocalAudioTrack.js.map +1 -1
- package/dist/room/track/LocalTrack.d.ts +1 -3
- package/dist/room/track/LocalTrack.js +3 -50
- 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 +14 -5
- package/dist/room/track/LocalVideoTrack.js +156 -62
- package/dist/room/track/LocalVideoTrack.js.map +1 -1
- package/dist/room/track/LocalVideoTrack.test.d.ts +1 -0
- package/dist/room/track/LocalVideoTrack.test.js +68 -0
- package/dist/room/track/LocalVideoTrack.test.js.map +1 -0
- 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 -4
- package/dist/room/track/RemoteTrackPublication.js +41 -15
- package/dist/room/track/RemoteTrackPublication.js.map +1 -1
- package/dist/room/track/RemoteVideoTrack.d.ts +7 -9
- package/dist/room/track/RemoteVideoTrack.js +77 -41
- package/dist/room/track/RemoteVideoTrack.js.map +1 -1
- package/dist/room/track/Track.d.ts +13 -2
- package/dist/room/track/Track.js +34 -2
- 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 +4 -6
- package/dist/room/track/create.js +10 -57
- package/dist/room/track/create.js.map +1 -1
- 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/track/options.d.ts +15 -65
- package/dist/room/track/options.js +14 -13
- package/dist/room/track/options.js.map +1 -1
- package/dist/room/track/utils.d.ts +3 -0
- package/dist/room/track/utils.js +68 -0
- package/dist/room/track/utils.js.map +1 -0
- package/dist/room/track/utils.test.d.ts +1 -0
- package/dist/room/track/utils.test.js +85 -0
- package/dist/room/track/utils.test.js.map +1 -0
- package/dist/room/utils.d.ts +1 -1
- package/dist/room/utils.js +5 -6
- package/dist/room/utils.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/example/index.html +193 -178
- package/example/sample.ts +467 -327
- package/example/styles.css +144 -0
- package/example/webpack.config.js +1 -1
- package/jest.config.js +6 -0
- package/package.json +9 -6
- package/tsconfig.eslint.json +8 -1
- package/dist/room/defaults.d.ts +0 -5
- package/dist/room/defaults.js +0 -32
- package/dist/room/defaults.js.map +0 -1
@@ -1,18 +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
|
-
name: string;
|
7
7
|
mediaStreamTrack: MediaStreamTrack;
|
8
8
|
attachedElements: HTMLMediaElement[];
|
9
9
|
isMuted: boolean;
|
10
|
+
streamState: Track.StreamState;
|
10
11
|
source: Track.Source;
|
11
12
|
/**
|
12
13
|
* sid is set after track is published to server, or if it's a remote track
|
13
14
|
*/
|
14
15
|
sid?: Track.SID;
|
15
|
-
protected
|
16
|
+
protected _currentBitrate: number;
|
17
|
+
protected constructor(mediaTrack: MediaStreamTrack, kind: Track.Kind);
|
18
|
+
/** current receive bits per second */
|
19
|
+
get currentBitrate(): number;
|
16
20
|
/**
|
17
21
|
* creates a new HTMLAudioElement or HTMLVideoElement, attaches to it, and returns it
|
18
22
|
*/
|
@@ -53,6 +57,11 @@ export declare namespace Track {
|
|
53
57
|
ScreenShareAudio = "screen_share_audio",
|
54
58
|
Unknown = "unknown"
|
55
59
|
}
|
60
|
+
enum StreamState {
|
61
|
+
Active = "active",
|
62
|
+
Paused = "paused",
|
63
|
+
Unknown = "unknown"
|
64
|
+
}
|
56
65
|
interface Dimensions {
|
57
66
|
width: number;
|
58
67
|
height: number;
|
@@ -65,4 +74,6 @@ export declare namespace Track {
|
|
65
74
|
function sourceToProto(s: Source): TrackSource;
|
66
75
|
/** @internal */
|
67
76
|
function sourceFromProto(s: TrackSource): Source;
|
77
|
+
/** @internal */
|
78
|
+
function streamStateFromProto(s: ProtoStreamState): StreamState;
|
68
79
|
}
|
package/dist/room/track/Track.js
CHANGED
@@ -3,20 +3,27 @@ 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 = [];
|
10
12
|
class Track extends events_1.EventEmitter {
|
11
|
-
constructor(mediaTrack, kind
|
13
|
+
constructor(mediaTrack, kind) {
|
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
|
-
this.name = name || '';
|
18
21
|
this.source = Track.Source.Unknown;
|
19
22
|
}
|
23
|
+
/** current receive bits per second */
|
24
|
+
get currentBitrate() {
|
25
|
+
return this._currentBitrate;
|
26
|
+
}
|
20
27
|
attach(element) {
|
21
28
|
let elementType = 'audio';
|
22
29
|
if (this.kind === Track.Kind.Video) {
|
@@ -129,6 +136,13 @@ function attachToElement(track, element) {
|
|
129
136
|
mediaStream.removeTrack(et);
|
130
137
|
});
|
131
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
|
+
}
|
132
146
|
}
|
133
147
|
exports.attachToElement = attachToElement;
|
134
148
|
/** @internal */
|
@@ -155,6 +169,12 @@ exports.detachTrack = detachTrack;
|
|
155
169
|
Source["ScreenShareAudio"] = "screen_share_audio";
|
156
170
|
Source["Unknown"] = "unknown";
|
157
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 = {}));
|
158
178
|
/** @internal */
|
159
179
|
function kindToProto(k) {
|
160
180
|
switch (k) {
|
@@ -211,5 +231,17 @@ exports.detachTrack = detachTrack;
|
|
211
231
|
}
|
212
232
|
}
|
213
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;
|
214
246
|
})(Track = exports.Track || (exports.Track = {}));
|
215
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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"}
|
@@ -1,9 +1,7 @@
|
|
1
1
|
import LocalAudioTrack from './LocalAudioTrack';
|
2
2
|
import LocalTrack from './LocalTrack';
|
3
3
|
import LocalVideoTrack from './LocalVideoTrack';
|
4
|
-
import {
|
5
|
-
export declare function getLastAudioCreateError(): Error | undefined;
|
6
|
-
export declare function getLastVideoCreateError(): Error | undefined;
|
4
|
+
import { AudioCaptureOptions, CreateLocalTracksOptions, ScreenShareCaptureOptions, VideoCaptureOptions } from './options';
|
7
5
|
/**
|
8
6
|
* Creates a local video and audio track at the same time. When acquiring both
|
9
7
|
* audio and video tracks together, it'll display a single permission prompt to
|
@@ -15,11 +13,11 @@ export declare function createLocalTracks(options?: CreateLocalTracksOptions): P
|
|
15
13
|
* Creates a [[LocalVideoTrack]] with getUserMedia()
|
16
14
|
* @param options
|
17
15
|
*/
|
18
|
-
export declare function createLocalVideoTrack(options?:
|
19
|
-
export declare function createLocalAudioTrack(options?:
|
16
|
+
export declare function createLocalVideoTrack(options?: VideoCaptureOptions): Promise<LocalVideoTrack>;
|
17
|
+
export declare function createLocalAudioTrack(options?: AudioCaptureOptions): Promise<LocalAudioTrack>;
|
20
18
|
/**
|
21
19
|
* Creates a screen capture tracks with getDisplayMedia().
|
22
20
|
* A LocalVideoTrack is always created and returned.
|
23
21
|
* If { audio: true }, and the browser supports audio capture, a LocalAudioTrack is also created.
|
24
22
|
*/
|
25
|
-
export declare function createLocalScreenTracks(options?:
|
23
|
+
export declare function createLocalScreenTracks(options?: ScreenShareCaptureOptions): Promise<Array<LocalTrack>>;
|
@@ -12,23 +12,15 @@ 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.createLocalScreenTracks = exports.createLocalAudioTrack = exports.createLocalVideoTrack = exports.createLocalTracks =
|
15
|
+
exports.createLocalScreenTracks = exports.createLocalAudioTrack = exports.createLocalVideoTrack = exports.createLocalTracks = void 0;
|
16
16
|
const errors_1 = require("../errors");
|
17
|
+
const publishUtils_1 = require("../participant/publishUtils");
|
18
|
+
const defaults_1 = require("./defaults");
|
17
19
|
const LocalAudioTrack_1 = __importDefault(require("./LocalAudioTrack"));
|
18
|
-
const LocalTrack_1 = __importDefault(require("./LocalTrack"));
|
19
20
|
const LocalVideoTrack_1 = __importDefault(require("./LocalVideoTrack"));
|
20
21
|
const options_1 = require("./options");
|
21
22
|
const Track_1 = require("./Track");
|
22
|
-
|
23
|
-
function getLastAudioCreateError() {
|
24
|
-
return audioError;
|
25
|
-
}
|
26
|
-
exports.getLastAudioCreateError = getLastAudioCreateError;
|
27
|
-
let videoError;
|
28
|
-
function getLastVideoCreateError() {
|
29
|
-
return videoError;
|
30
|
-
}
|
31
|
-
exports.getLastVideoCreateError = getLastVideoCreateError;
|
23
|
+
const utils_1 = require("./utils");
|
32
24
|
/**
|
33
25
|
* Creates a local video and audio track at the same time. When acquiring both
|
34
26
|
* audio and video tracks together, it'll display a single permission prompt to
|
@@ -37,34 +29,9 @@ exports.getLastVideoCreateError = getLastVideoCreateError;
|
|
37
29
|
*/
|
38
30
|
function createLocalTracks(options) {
|
39
31
|
return __awaiter(this, void 0, void 0, function* () {
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
options.audio = {};
|
44
|
-
if (options.video === true)
|
45
|
-
options.video = {};
|
46
|
-
const constraints = LocalTrack_1.default.constraintsForOptions(options);
|
47
|
-
let stream;
|
48
|
-
try {
|
49
|
-
stream = yield navigator.mediaDevices.getUserMedia(constraints);
|
50
|
-
}
|
51
|
-
catch (err) {
|
52
|
-
if (err instanceof Error) {
|
53
|
-
if (constraints.audio) {
|
54
|
-
audioError = err;
|
55
|
-
}
|
56
|
-
if (constraints.video) {
|
57
|
-
videoError = err;
|
58
|
-
}
|
59
|
-
}
|
60
|
-
throw err;
|
61
|
-
}
|
62
|
-
if (constraints.audio) {
|
63
|
-
audioError = undefined;
|
64
|
-
}
|
65
|
-
if (constraints.video) {
|
66
|
-
videoError = undefined;
|
67
|
-
}
|
32
|
+
const opts = utils_1.mergeDefaultOptions(options, defaults_1.audioDefaults, defaults_1.videoDefaults);
|
33
|
+
const constraints = utils_1.constraintsForOptions(opts);
|
34
|
+
const stream = yield navigator.mediaDevices.getUserMedia(constraints);
|
68
35
|
return stream.getTracks().map((mediaStreamTrack) => {
|
69
36
|
const isAudio = mediaStreamTrack.kind === 'audio';
|
70
37
|
let trackOptions = isAudio ? options.audio : options.video;
|
@@ -76,7 +43,7 @@ function createLocalTracks(options) {
|
|
76
43
|
if (typeof conOrBool !== 'boolean') {
|
77
44
|
trackConstraints = conOrBool;
|
78
45
|
}
|
79
|
-
const track =
|
46
|
+
const track = publishUtils_1.mediaTrackToLocalTrack(mediaStreamTrack, trackConstraints);
|
80
47
|
if (track.kind === Track_1.Track.Kind.Video) {
|
81
48
|
track.source = Track_1.Track.Source.Camera;
|
82
49
|
}
|
@@ -123,9 +90,6 @@ function createLocalScreenTracks(options) {
|
|
123
90
|
if (options === undefined) {
|
124
91
|
options = {};
|
125
92
|
}
|
126
|
-
if (options.name === undefined) {
|
127
|
-
options.name = 'screen';
|
128
|
-
}
|
129
93
|
if (options.resolution === undefined) {
|
130
94
|
options.resolution = options_1.VideoPresets.fhd.resolution;
|
131
95
|
}
|
@@ -146,11 +110,11 @@ function createLocalScreenTracks(options) {
|
|
146
110
|
if (tracks.length === 0) {
|
147
111
|
throw new errors_1.TrackInvalidError('no video track found');
|
148
112
|
}
|
149
|
-
const screenVideo = new LocalVideoTrack_1.default(tracks[0]
|
113
|
+
const screenVideo = new LocalVideoTrack_1.default(tracks[0]);
|
150
114
|
screenVideo.source = Track_1.Track.Source.ScreenShare;
|
151
115
|
const localTracks = [screenVideo];
|
152
116
|
if (stream.getAudioTracks().length > 0) {
|
153
|
-
const screenAudio = new LocalAudioTrack_1.default(stream.getAudioTracks()[0]
|
117
|
+
const screenAudio = new LocalAudioTrack_1.default(stream.getAudioTracks()[0]);
|
154
118
|
screenAudio.source = Track_1.Track.Source.ScreenShareAudio;
|
155
119
|
localTracks.push(screenAudio);
|
156
120
|
}
|
@@ -158,15 +122,4 @@ function createLocalScreenTracks(options) {
|
|
158
122
|
});
|
159
123
|
}
|
160
124
|
exports.createLocalScreenTracks = createLocalScreenTracks;
|
161
|
-
/** @internal */
|
162
|
-
function createLocalTrack(mediaStreamTrack, name, constraints) {
|
163
|
-
switch (mediaStreamTrack.kind) {
|
164
|
-
case 'audio':
|
165
|
-
return new LocalAudioTrack_1.default(mediaStreamTrack, name, constraints);
|
166
|
-
case 'video':
|
167
|
-
return new LocalVideoTrack_1.default(mediaStreamTrack, name, constraints);
|
168
|
-
default:
|
169
|
-
throw new errors_1.TrackInvalidError(`unsupported track type: ${mediaStreamTrack.kind}`);
|
170
|
-
}
|
171
|
-
}
|
172
125
|
//# sourceMappingURL=create.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/room/track/create.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sCAA8C;AAC9C,
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/room/track/create.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.videoDefaults = exports.audioDefaults = exports.publishDefaults = void 0;
|
4
|
+
const options_1 = require("./options");
|
5
|
+
exports.publishDefaults = {
|
6
|
+
audioBitrate: options_1.AudioPresets.speech.maxBitrate,
|
7
|
+
dtx: true,
|
8
|
+
simulcast: true,
|
9
|
+
screenShareEncoding: options_1.ScreenSharePresets.hd_15.encoding,
|
10
|
+
stopMicTrackOnMute: false,
|
11
|
+
};
|
12
|
+
exports.audioDefaults = {
|
13
|
+
autoGainControl: true,
|
14
|
+
channelCount: 1,
|
15
|
+
echoCancellation: true,
|
16
|
+
noiseSuppression: true,
|
17
|
+
};
|
18
|
+
exports.videoDefaults = {
|
19
|
+
resolution: options_1.VideoPresets.qhd.resolution,
|
20
|
+
};
|
21
|
+
//# sourceMappingURL=defaults.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/room/track/defaults.ts"],"names":[],"mappings":";;;AAAA,uCAGmB;AAEN,QAAA,eAAe,GAAyB;IACnD,YAAY,EAAE,sBAAY,CAAC,MAAM,CAAC,UAAU;IAC5C,GAAG,EAAE,IAAI;IACT,SAAS,EAAE,IAAI;IACf,mBAAmB,EAAE,4BAAkB,CAAC,KAAK,CAAC,QAAQ;IACtD,kBAAkB,EAAE,KAAK;CAC1B,CAAC;AAEW,QAAA,aAAa,GAAwB;IAChD,eAAe,EAAE,IAAI;IACrB,YAAY,EAAE,CAAC;IACf,gBAAgB,EAAE,IAAI;IACtB,gBAAgB,EAAE,IAAI;CACvB,CAAC;AAEW,QAAA,aAAa,GAAwB;IAChD,UAAU,EAAE,sBAAY,CAAC,GAAG,CAAC,UAAU;CACxC,CAAC"}
|
@@ -17,12 +17,12 @@ export interface TrackPublishDefaults {
|
|
17
17
|
*/
|
18
18
|
audioBitrate?: number;
|
19
19
|
/**
|
20
|
-
* dtx (Discontinuous
|
20
|
+
* dtx (Discontinuous Transmission of audio), defaults to true
|
21
21
|
*/
|
22
22
|
dtx?: boolean;
|
23
23
|
/**
|
24
|
-
* use simulcast, defaults to
|
25
|
-
* When using simulcast, LiveKit will publish up to three
|
24
|
+
* use simulcast, defaults to true.
|
25
|
+
* When using simulcast, LiveKit will publish up to three versions of the stream
|
26
26
|
* at various resolutions.
|
27
27
|
*/
|
28
28
|
simulcast?: boolean;
|
@@ -36,40 +36,6 @@ export interface TrackPublishDefaults {
|
|
36
36
|
*/
|
37
37
|
stopMicTrackOnMute?: boolean;
|
38
38
|
}
|
39
|
-
export interface TrackCaptureDefaults {
|
40
|
-
/**
|
41
|
-
* default device to use for microphone capture
|
42
|
-
*/
|
43
|
-
audioDeviceId?: string;
|
44
|
-
/**
|
45
|
-
* specifies whether automatic gain control is preferred, defaults to true
|
46
|
-
*/
|
47
|
-
autoGainControl?: boolean;
|
48
|
-
/**
|
49
|
-
* the channel count or range of channel counts which are acceptable and/or required
|
50
|
-
*/
|
51
|
-
channelCount?: number;
|
52
|
-
/**
|
53
|
-
* whether or not echo cancellation is preferred, defaults to true
|
54
|
-
*/
|
55
|
-
echoCancellation?: boolean;
|
56
|
-
/**
|
57
|
-
* whether noise suppression is preferred, defaults to true
|
58
|
-
*/
|
59
|
-
noiseSuppression?: boolean;
|
60
|
-
/**
|
61
|
-
* set if a particular video facing mode is preferred
|
62
|
-
*/
|
63
|
-
videoFacingMode?: 'user' | 'environment' | 'left' | 'right';
|
64
|
-
/**
|
65
|
-
* default device to use for camera capture
|
66
|
-
*/
|
67
|
-
videoDeviceId?: string;
|
68
|
-
/**
|
69
|
-
* default video capture resolution
|
70
|
-
*/
|
71
|
-
videoResolution?: VideoResolution;
|
72
|
-
}
|
73
39
|
/**
|
74
40
|
* Options when publishing tracks
|
75
41
|
*/
|
@@ -88,33 +54,26 @@ export interface CreateLocalTracksOptions {
|
|
88
54
|
* audio track options, true to create with defaults. false if audio shouldn't be created
|
89
55
|
* default true
|
90
56
|
*/
|
91
|
-
audio?: boolean |
|
57
|
+
audio?: boolean | AudioCaptureOptions;
|
92
58
|
/**
|
93
59
|
* video track options, true to create with defaults. false if video shouldn't be created
|
94
60
|
* default true
|
95
61
|
*/
|
96
|
-
video?: boolean |
|
62
|
+
video?: boolean | VideoCaptureOptions;
|
97
63
|
}
|
98
|
-
export interface
|
99
|
-
/** name of track */
|
100
|
-
name?: string;
|
64
|
+
export interface VideoCaptureOptions {
|
101
65
|
/**
|
102
66
|
* A ConstrainDOMString object specifying a device ID or an array of device
|
103
67
|
* IDs which are acceptable and/or required.
|
104
68
|
*/
|
105
69
|
deviceId?: ConstrainDOMString;
|
106
|
-
}
|
107
|
-
export interface CreateVideoTrackOptions extends CreateLocalTrackOptions {
|
108
70
|
/**
|
109
71
|
* a facing or an array of facings which are acceptable and/or required.
|
110
|
-
* [valid options](https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints/facingMode)
|
111
72
|
*/
|
112
|
-
facingMode?:
|
73
|
+
facingMode?: 'user' | 'environment' | 'left' | 'right';
|
113
74
|
resolution?: VideoResolution;
|
114
75
|
}
|
115
|
-
export interface
|
116
|
-
/** name of track, defaults to "screen" */
|
117
|
-
name?: string;
|
76
|
+
export interface ScreenShareCaptureOptions {
|
118
77
|
/**
|
119
78
|
* true to capture audio shared. browser support for audio capturing in
|
120
79
|
* screenshare is limited: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia#browser_compatibility
|
@@ -123,7 +82,7 @@ export interface CreateScreenTrackOptions {
|
|
123
82
|
/** capture resolution, defaults to full HD */
|
124
83
|
resolution?: VideoResolution;
|
125
84
|
}
|
126
|
-
export interface
|
85
|
+
export interface AudioCaptureOptions {
|
127
86
|
/**
|
128
87
|
* specifies whether automatic gain control is preferred and/or required
|
129
88
|
*/
|
@@ -132,6 +91,11 @@ export interface CreateAudioTrackOptions extends CreateLocalTrackOptions {
|
|
132
91
|
* the channel count or range of channel counts which are acceptable and/or required
|
133
92
|
*/
|
134
93
|
channelCount?: ConstrainULong;
|
94
|
+
/**
|
95
|
+
* A ConstrainDOMString object specifying a device ID or an array of device
|
96
|
+
* IDs which are acceptable and/or required.
|
97
|
+
*/
|
98
|
+
deviceId?: ConstrainDOMString;
|
135
99
|
/**
|
136
100
|
* whether or not echo cancellation is preferred and/or required
|
137
101
|
*/
|
@@ -153,20 +117,6 @@ export interface CreateAudioTrackOptions extends CreateLocalTrackOptions {
|
|
153
117
|
*/
|
154
118
|
sampleSize?: ConstrainULong;
|
155
119
|
}
|
156
|
-
/**
|
157
|
-
* example
|
158
|
-
*
|
159
|
-
* ```typescript
|
160
|
-
* {
|
161
|
-
* width: 960,
|
162
|
-
* height: 540,
|
163
|
-
* frameRate: {
|
164
|
-
* ideal: 30,
|
165
|
-
* max: 60,
|
166
|
-
* },
|
167
|
-
* }
|
168
|
-
* ```
|
169
|
-
*/
|
170
120
|
export interface VideoResolution {
|
171
121
|
width: number;
|
172
122
|
height: number;
|
@@ -181,7 +131,7 @@ export declare class VideoPreset {
|
|
181
131
|
encoding: VideoEncoding;
|
182
132
|
width: number;
|
183
133
|
height: number;
|
184
|
-
constructor(width: number, height: number, maxBitrate: number, maxFramerate
|
134
|
+
constructor(width: number, height: number, maxBitrate: number, maxFramerate?: number);
|
185
135
|
get resolution(): VideoResolution;
|
186
136
|
}
|
187
137
|
export interface AudioPreset {
|
@@ -15,6 +15,7 @@ class VideoPreset {
|
|
15
15
|
width: this.width,
|
16
16
|
height: this.height,
|
17
17
|
frameRate: this.encoding.maxFramerate,
|
18
|
+
aspectRatio: this.width / this.height,
|
18
19
|
};
|
19
20
|
}
|
20
21
|
}
|
@@ -35,27 +36,27 @@ var AudioPresets;
|
|
35
36
|
* Sane presets for video resolution/encoding
|
36
37
|
*/
|
37
38
|
exports.VideoPresets = {
|
38
|
-
qvga: new VideoPreset(320, 180,
|
39
|
-
vga: new VideoPreset(640, 360,
|
40
|
-
qhd: new VideoPreset(960, 540,
|
41
|
-
hd: new VideoPreset(1280, 720,
|
42
|
-
fhd: new VideoPreset(1920, 1080,
|
39
|
+
qvga: new VideoPreset(320, 180, 120000, 10),
|
40
|
+
vga: new VideoPreset(640, 360, 300000, 20),
|
41
|
+
qhd: new VideoPreset(960, 540, 600000, 25),
|
42
|
+
hd: new VideoPreset(1280, 720, 2000000, 30),
|
43
|
+
fhd: new VideoPreset(1920, 1080, 3000000, 30),
|
43
44
|
};
|
44
45
|
/**
|
45
46
|
* Four by three presets
|
46
47
|
*/
|
47
48
|
exports.VideoPresets43 = {
|
48
|
-
qvga: new VideoPreset(240, 180,
|
49
|
-
vga: new VideoPreset(480, 360,
|
50
|
-
qhd: new VideoPreset(720, 540,
|
51
|
-
hd: new VideoPreset(960, 720,
|
52
|
-
fhd: new VideoPreset(1440, 1080,
|
49
|
+
qvga: new VideoPreset(240, 180, 90000, 10),
|
50
|
+
vga: new VideoPreset(480, 360, 225000, 20),
|
51
|
+
qhd: new VideoPreset(720, 540, 450000, 25),
|
52
|
+
hd: new VideoPreset(960, 720, 1500000, 30),
|
53
|
+
fhd: new VideoPreset(1440, 1080, 2800000, 30),
|
53
54
|
};
|
54
55
|
exports.ScreenSharePresets = {
|
55
56
|
vga: new VideoPreset(640, 360, 200000, 3),
|
56
57
|
hd_8: new VideoPreset(1280, 720, 400000, 5),
|
57
|
-
hd_15: new VideoPreset(1280, 720,
|
58
|
-
fhd_15: new VideoPreset(1920, 1080,
|
59
|
-
fhd_30: new VideoPreset(1920, 1080,
|
58
|
+
hd_15: new VideoPreset(1280, 720, 1000000, 15),
|
59
|
+
fhd_15: new VideoPreset(1920, 1080, 1500000, 15),
|
60
|
+
fhd_30: new VideoPreset(1920, 1080, 3000000, 30),
|
60
61
|
};
|
61
62
|
//# sourceMappingURL=options.js.map
|