@whereby.com/media 1.6.1 → 1.6.2
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/dist/index.cjs +50 -3
- package/dist/index.d.cts +14 -4
- package/dist/index.d.mts +14 -4
- package/dist/index.d.ts +14 -4
- package/dist/index.mjs +50 -3
- package/dist/legacy-esm.js +50 -3
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -3478,6 +3478,7 @@ var rtcManagerEvents = {
|
|
|
3478
3478
|
ICE_RESTART: "ice_restart",
|
|
3479
3479
|
MICROPHONE_NOT_WORKING: "microphone_not_working",
|
|
3480
3480
|
MICROPHONE_STOPPED_WORKING: "microphone_stopped_working",
|
|
3481
|
+
CAMERA_STOPPED_WORKING: "camera_stopped_working",
|
|
3481
3482
|
NEW_PC: "new_pc",
|
|
3482
3483
|
SFU_CONNECTION_OPEN: "sfu_connection_open",
|
|
3483
3484
|
SFU_CONNECTION_CLOSED: "sfu_connection_closed",
|
|
@@ -3524,6 +3525,10 @@ class P2pRtcManager {
|
|
|
3524
3525
|
rtcStats.sendEvent("audio_ended", { unloading: unloading$1 });
|
|
3525
3526
|
this._emit(rtcManagerEvents.MICROPHONE_STOPPED_WORKING, {});
|
|
3526
3527
|
};
|
|
3528
|
+
this._videoTrackOnEnded = () => {
|
|
3529
|
+
rtcStats.sendEvent("video_ended", { unloading: unloading$1 });
|
|
3530
|
+
this._emit(rtcManagerEvents.CAMERA_STOPPED_WORKING, {});
|
|
3531
|
+
};
|
|
3527
3532
|
this._updateAndScheduleMediaServersRefresh({
|
|
3528
3533
|
sfuServer,
|
|
3529
3534
|
iceServers: iceServers.iceServers || [],
|
|
@@ -3551,9 +3556,13 @@ class P2pRtcManager {
|
|
|
3551
3556
|
if (streamId === CAMERA_STREAM_ID) {
|
|
3552
3557
|
this._addStreamToPeerConnections(stream);
|
|
3553
3558
|
const [audioTrack] = stream.getAudioTracks();
|
|
3559
|
+
const videoTrack = stream.getVideoTracks()[0];
|
|
3554
3560
|
if (audioTrack) {
|
|
3555
3561
|
this._startMonitoringAudioTrack(audioTrack);
|
|
3556
3562
|
}
|
|
3563
|
+
if (videoTrack && !videoTrack.replacement) {
|
|
3564
|
+
this._startMonitoringVideoTrack(videoTrack);
|
|
3565
|
+
}
|
|
3557
3566
|
if (this._localStreamDeregisterFunction) {
|
|
3558
3567
|
this._localStreamDeregisterFunction();
|
|
3559
3568
|
this._localStreamDeregisterFunction = null;
|
|
@@ -3576,9 +3585,15 @@ class P2pRtcManager {
|
|
|
3576
3585
|
if (oldTrack && oldTrack.kind === "audio") {
|
|
3577
3586
|
this._stopMonitoringAudioTrack(oldTrack);
|
|
3578
3587
|
}
|
|
3588
|
+
if (oldTrack && oldTrack.kind === "video" && !newTrack.replacement) {
|
|
3589
|
+
this._stopMonitoringVideoTrack(oldTrack);
|
|
3590
|
+
}
|
|
3579
3591
|
if (newTrack && newTrack.kind === "audio") {
|
|
3580
3592
|
this._startMonitoringAudioTrack(newTrack);
|
|
3581
3593
|
}
|
|
3594
|
+
if (newTrack.kind === "video" && !newTrack.replacement) {
|
|
3595
|
+
this._startMonitoringVideoTrack(newTrack);
|
|
3596
|
+
}
|
|
3582
3597
|
return this._replaceTrackToPeerConnections(oldTrack, newTrack);
|
|
3583
3598
|
}
|
|
3584
3599
|
accept({ clientId, shouldAddLocalVideo }) {
|
|
@@ -4097,6 +4112,12 @@ class P2pRtcManager {
|
|
|
4097
4112
|
_stopMonitoringAudioTrack(track) {
|
|
4098
4113
|
track.removeEventListener("ended", this._audioTrackOnEnded);
|
|
4099
4114
|
}
|
|
4115
|
+
_startMonitoringVideoTrack(track) {
|
|
4116
|
+
track.addEventListener("ended", this._videoTrackOnEnded);
|
|
4117
|
+
}
|
|
4118
|
+
_stopMonitoringVideoTrack(track) {
|
|
4119
|
+
track.removeEventListener("ended", this._videoTrackOnEnded);
|
|
4120
|
+
}
|
|
4100
4121
|
_connect(clientId) {
|
|
4101
4122
|
this.rtcStatsReconnect();
|
|
4102
4123
|
const shouldAddLocalVideo = true;
|
|
@@ -4450,10 +4471,12 @@ class P2pRtcManager {
|
|
|
4450
4471
|
}
|
|
4451
4472
|
}
|
|
4452
4473
|
stopOrResumeVideo(localStream, enable) {
|
|
4474
|
+
var _a;
|
|
4453
4475
|
if (!["chrome", "safari"].includes(browserName$1)) {
|
|
4454
4476
|
return;
|
|
4455
4477
|
}
|
|
4456
4478
|
if (enable === false) {
|
|
4479
|
+
const stopCameraDelay = ((_a = localStream.getVideoTracks().find((t) => !t.enabled)) === null || _a === void 0 ? void 0 : _a.readyState) === "ended" ? 0 : 5000;
|
|
4457
4480
|
setTimeout(() => {
|
|
4458
4481
|
localStream.getVideoTracks().forEach((track) => {
|
|
4459
4482
|
if (track.enabled === false) {
|
|
@@ -4466,7 +4489,7 @@ class P2pRtcManager {
|
|
|
4466
4489
|
this._handleStopOrResumeVideo({ enable, track });
|
|
4467
4490
|
}
|
|
4468
4491
|
});
|
|
4469
|
-
},
|
|
4492
|
+
}, stopCameraDelay);
|
|
4470
4493
|
}
|
|
4471
4494
|
else {
|
|
4472
4495
|
if (localStream.getVideoTracks().length === 0) {
|
|
@@ -4477,6 +4500,7 @@ class P2pRtcManager {
|
|
|
4477
4500
|
navigator.mediaDevices.getUserMedia({ video: constraints }).then((stream) => {
|
|
4478
4501
|
const track = stream.getVideoTracks()[0];
|
|
4479
4502
|
localStream.addTrack(track);
|
|
4503
|
+
this._startMonitoringVideoTrack(track);
|
|
4480
4504
|
this._emit(EVENTS.LOCAL_STREAM_TRACK_ADDED, {
|
|
4481
4505
|
streamId: localStream.id,
|
|
4482
4506
|
tracks: [track],
|
|
@@ -4990,6 +5014,10 @@ class VegaRtcManager {
|
|
|
4990
5014
|
rtcStats.sendEvent("audio_ended", { unloading });
|
|
4991
5015
|
this._emitToPWA(rtcManagerEvents.MICROPHONE_STOPPED_WORKING, {});
|
|
4992
5016
|
};
|
|
5017
|
+
this._videoTrackOnEnded = () => {
|
|
5018
|
+
rtcStats.sendEvent("video_ended", { unloading });
|
|
5019
|
+
this._emitToPWA(rtcManagerEvents.CAMERA_STOPPED_WORKING, {});
|
|
5020
|
+
};
|
|
4993
5021
|
this._updateAndScheduleMediaServersRefresh({
|
|
4994
5022
|
sfuServer,
|
|
4995
5023
|
iceServers: iceServers.iceServers || [],
|
|
@@ -5700,12 +5728,18 @@ class VegaRtcManager {
|
|
|
5700
5728
|
if (oldTrack && oldTrack.kind === "audio") {
|
|
5701
5729
|
this._stopMonitoringAudioTrack(oldTrack);
|
|
5702
5730
|
}
|
|
5731
|
+
if (oldTrack && oldTrack.kind === "video" && !track.replacement) {
|
|
5732
|
+
this._stopMonitoringVideoTrack(oldTrack);
|
|
5733
|
+
}
|
|
5703
5734
|
if (track.kind === "audio") {
|
|
5704
5735
|
this._startMonitoringAudioTrack(track);
|
|
5705
5736
|
this._micTrack = track;
|
|
5706
5737
|
this._replaceMicTrack();
|
|
5707
5738
|
}
|
|
5708
5739
|
if (track.kind === "video") {
|
|
5740
|
+
if (!track.replacement) {
|
|
5741
|
+
this._startMonitoringVideoTrack(track);
|
|
5742
|
+
}
|
|
5709
5743
|
this._webcamTrack = track;
|
|
5710
5744
|
this._replaceWebcamTrack();
|
|
5711
5745
|
}
|
|
@@ -5734,8 +5768,12 @@ class VegaRtcManager {
|
|
|
5734
5768
|
this._webcamPaused = videoPaused;
|
|
5735
5769
|
const videoTrack = stream.getVideoTracks()[0];
|
|
5736
5770
|
const audioTrack = stream.getAudioTracks()[0];
|
|
5737
|
-
if (videoTrack)
|
|
5771
|
+
if (videoTrack) {
|
|
5738
5772
|
this._sendWebcam(videoTrack);
|
|
5773
|
+
if (!videoTrack.replacement) {
|
|
5774
|
+
this._startMonitoringVideoTrack(videoTrack);
|
|
5775
|
+
}
|
|
5776
|
+
}
|
|
5739
5777
|
if (audioTrack) {
|
|
5740
5778
|
this._sendMic(audioTrack);
|
|
5741
5779
|
this._syncMicAnalyser();
|
|
@@ -5798,6 +5836,7 @@ class VegaRtcManager {
|
|
|
5798
5836
|
}
|
|
5799
5837
|
}
|
|
5800
5838
|
stopOrResumeVideo(localStream, enable) {
|
|
5839
|
+
var _a;
|
|
5801
5840
|
logger$1.info("stopOrResumeVideo() [enable:%s]", enable);
|
|
5802
5841
|
this._webcamPaused = !enable;
|
|
5803
5842
|
this._pauseResumeWebcam();
|
|
@@ -5806,6 +5845,7 @@ class VegaRtcManager {
|
|
|
5806
5845
|
}
|
|
5807
5846
|
if (!enable) {
|
|
5808
5847
|
clearTimeout(this._stopCameraTimeout);
|
|
5848
|
+
const stopCameraDelay = ((_a = localStream.getVideoTracks().find((t) => !t.enabled)) === null || _a === void 0 ? void 0 : _a.readyState) === "ended" ? 0 : 5000;
|
|
5809
5849
|
this._stopCameraTimeout = setTimeout(() => {
|
|
5810
5850
|
localStream.getVideoTracks().forEach((track) => {
|
|
5811
5851
|
if (track.enabled === false) {
|
|
@@ -5818,13 +5858,14 @@ class VegaRtcManager {
|
|
|
5818
5858
|
this._handleStopOrResumeVideo({ enable, track });
|
|
5819
5859
|
}
|
|
5820
5860
|
});
|
|
5821
|
-
},
|
|
5861
|
+
}, stopCameraDelay);
|
|
5822
5862
|
}
|
|
5823
5863
|
else if (localStream.getVideoTracks().length === 0) {
|
|
5824
5864
|
const constraints = this._webrtcProvider.getMediaConstraints().video;
|
|
5825
5865
|
navigator.mediaDevices.getUserMedia({ video: constraints }).then((stream) => {
|
|
5826
5866
|
const track = stream.getVideoTracks()[0];
|
|
5827
5867
|
localStream.addTrack(track);
|
|
5868
|
+
this._startMonitoringVideoTrack(track);
|
|
5828
5869
|
this._emitToPWA(EVENTS.LOCAL_STREAM_TRACK_ADDED, {
|
|
5829
5870
|
streamId: localStream.id,
|
|
5830
5871
|
tracks: [track],
|
|
@@ -5925,6 +5966,12 @@ class VegaRtcManager {
|
|
|
5925
5966
|
_stopMonitoringAudioTrack(track) {
|
|
5926
5967
|
track.removeEventListener("ended", this._audioTrackOnEnded);
|
|
5927
5968
|
}
|
|
5969
|
+
_startMonitoringVideoTrack(track) {
|
|
5970
|
+
track.addEventListener("ended", this._videoTrackOnEnded);
|
|
5971
|
+
}
|
|
5972
|
+
_stopMonitoringVideoTrack(track) {
|
|
5973
|
+
track.removeEventListener("ended", this._videoTrackOnEnded);
|
|
5974
|
+
}
|
|
5928
5975
|
_onMessage(message) {
|
|
5929
5976
|
return __awaiter(this, void 0, void 0, function* () {
|
|
5930
5977
|
const { method, data } = message;
|
package/dist/index.d.cts
CHANGED
|
@@ -128,7 +128,7 @@ interface RtcManager {
|
|
|
128
128
|
addNewStream(streamId: string, stream: MediaStream, isAudioEnabled: boolean, isVideoEnabled: boolean): void;
|
|
129
129
|
disconnect(streamId: string, activeBreakout: boolean | null, eventClaim?: string): void;
|
|
130
130
|
disconnectAll(): void;
|
|
131
|
-
replaceTrack(oldTrack:
|
|
131
|
+
replaceTrack(oldTrack: CustomMediaStreamTrack, newTrack: CustomMediaStreamTrack): void;
|
|
132
132
|
removeStream(streamId: string, _stream: MediaStream, requestedByClientId: string | null): void;
|
|
133
133
|
shouldAcceptStreamsFromBothSides?: () => boolean;
|
|
134
134
|
updateStreamResolution(streamId: string, ignored: null, resolution: {
|
|
@@ -263,6 +263,9 @@ type GetDeviceDataResult = {
|
|
|
263
263
|
kind: string;
|
|
264
264
|
};
|
|
265
265
|
};
|
|
266
|
+
interface CustomMediaStreamTrack extends MediaStreamTrack {
|
|
267
|
+
replacement?: boolean;
|
|
268
|
+
}
|
|
266
269
|
|
|
267
270
|
declare function getMediaConstraints({ disableAEC, disableAGC, hd, lax, lowDataMode, preferredDeviceIds, resolution, simulcast, widescreen, }: GetMediaConstraintsOptions): any;
|
|
268
271
|
declare function getConstraints({ devices, videoId, audioId, options, type }: GetConstraintsOptions): any;
|
|
@@ -327,6 +330,7 @@ declare class P2pRtcManager implements RtcManager {
|
|
|
327
330
|
};
|
|
328
331
|
_pendingActionsForConnectedPeerConnections: any[];
|
|
329
332
|
_audioTrackOnEnded: () => void;
|
|
333
|
+
_videoTrackOnEnded: () => void;
|
|
330
334
|
totalSessionsCreated: number;
|
|
331
335
|
_iceServers: any;
|
|
332
336
|
_sfuServer: any;
|
|
@@ -356,7 +360,7 @@ declare class P2pRtcManager implements RtcManager {
|
|
|
356
360
|
supportsScreenShareAudio(): boolean;
|
|
357
361
|
maybeRestrictRelayBandwidth(session: any): void;
|
|
358
362
|
addNewStream(streamId: string, stream: MediaStream): void;
|
|
359
|
-
replaceTrack(oldTrack:
|
|
363
|
+
replaceTrack(oldTrack: CustomMediaStreamTrack, newTrack: CustomMediaStreamTrack): Promise<any[]>;
|
|
360
364
|
accept({ clientId, shouldAddLocalVideo }: {
|
|
361
365
|
clientId: string;
|
|
362
366
|
shouldAddLocalVideo?: boolean;
|
|
@@ -412,6 +416,8 @@ declare class P2pRtcManager implements RtcManager {
|
|
|
412
416
|
_clearMediaServersRefresh(): void;
|
|
413
417
|
_startMonitoringAudioTrack(track: any): void;
|
|
414
418
|
_stopMonitoringAudioTrack(track: any): void;
|
|
419
|
+
_startMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
420
|
+
_stopMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
415
421
|
_connect(clientId: string): Promise<any>;
|
|
416
422
|
_maybeRestartIce(clientId: string, session: any): void;
|
|
417
423
|
_setCodecPreferences(pc: any, vp9On: any, av1On: any, redOn: any): void;
|
|
@@ -841,6 +847,7 @@ declare const _default: {
|
|
|
841
847
|
ICE_RESTART: string;
|
|
842
848
|
MICROPHONE_NOT_WORKING: string;
|
|
843
849
|
MICROPHONE_STOPPED_WORKING: string;
|
|
850
|
+
CAMERA_STOPPED_WORKING: string;
|
|
844
851
|
NEW_PC: string;
|
|
845
852
|
SFU_CONNECTION_OPEN: string;
|
|
846
853
|
SFU_CONNECTION_CLOSED: string;
|
|
@@ -1090,6 +1097,7 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1090
1097
|
_colocation: any;
|
|
1091
1098
|
_stopCameraTimeout: any;
|
|
1092
1099
|
_audioTrackOnEnded: any;
|
|
1100
|
+
_videoTrackOnEnded: any;
|
|
1093
1101
|
_socketListenerDeregisterFunctions: any;
|
|
1094
1102
|
_reconnect: any;
|
|
1095
1103
|
_reconnectTimeOut: any;
|
|
@@ -1150,7 +1158,7 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1150
1158
|
setRemoteScreenshareVideoTrackIds(): void;
|
|
1151
1159
|
setRoomSessionId(roomSessionId: string): void;
|
|
1152
1160
|
disconnect(clientIdOrStreamId: string, _activeBreakout: any, eventClaim?: string): void;
|
|
1153
|
-
replaceTrack(oldTrack:
|
|
1161
|
+
replaceTrack(oldTrack: CustomMediaStreamTrack | null, track: CustomMediaStreamTrack): void;
|
|
1154
1162
|
removeStream(streamId: string, _stream: MediaStream, requestedByClientId: string): void;
|
|
1155
1163
|
_onMicAnalyserScoreUpdated(data: any): void;
|
|
1156
1164
|
addNewStream(streamId: string, stream: MediaStream, audioPaused: boolean, videoPaused: boolean): void;
|
|
@@ -1178,6 +1186,8 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1178
1186
|
rtcStatsReconnect(): void;
|
|
1179
1187
|
_startMonitoringAudioTrack(track: MediaStreamTrack): void;
|
|
1180
1188
|
_stopMonitoringAudioTrack(track: MediaStreamTrack): void;
|
|
1189
|
+
_startMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
1190
|
+
_stopMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
1181
1191
|
_onMessage(message: any): Promise<void>;
|
|
1182
1192
|
_onConsumerReady(options: any): Promise<void>;
|
|
1183
1193
|
_onConsumerClosed({ consumerId, reason }: {
|
|
@@ -1380,4 +1390,4 @@ declare class RtcStream {
|
|
|
1380
1390
|
static getTypeFromId(id: string): string;
|
|
1381
1391
|
}
|
|
1382
1392
|
|
|
1383
|
-
export { type AddSpotlightRequest, type AudioEnableRequest, type AudioEnableRequestedEvent, type AudioEnabledEvent, BandwidthTester, type ChatMessage, type ClientKickedEvent, type ClientLeftEvent, type ClientMetadataPayload, type ClientMetadataReceivedEvent, type ClientRole, type CloudRecordingStartedEvent, type Credentials, EVENTS, type GetConstraintsOptions, type GetDeviceDataResult, type GetMediaConstraintsOptions, type GetStreamOptions, type GetStreamResult, type GetUpdatedDevicesResult, type IdentifyDeviceRequest, type JoinRoomRequest, KNOCK_MESSAGES, KalmanFilter, type KnockAcceptedEvent, type KnockRejectedEvent, type KnockRoomRequest, type KnockerLeftEvent, Logger, MAXIMUM_TURN_BANDWIDTH, MAXIMUM_TURN_BANDWIDTH_UNLIMITED, MEDIA_JITTER_BUFFER_TARGET, type NewClientEvent, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, type RemoveSpotlightRequest, type RoleName, type RoomJoinedEvent, type RoomKnockedEvent, type RoomLockedEvent, type RoomSessionEndedEvent, type RtcClientConnectionStatusChangedPayload, RtcEventNames, type RtcEvents, type RtcLocalStreamTrackAddedPayload, type RtcLocalStreamTrackRemovedPayload, type RtcManager, type RtcManagerCreatedPayload, RtcManagerDispatcher, RtcStream, type RtcStreamAddedPayload, STREAM_TYPES, type ScreenshareStartedEvent, type ScreenshareStoppedEvent, type SendClientMetadataRequest, ServerSocket, Session, SfuV2Parser, type SignalClient, type SignalEvents, type SignalKnocker, type SignalRequests, type SocketConf, type SocketManager, type Spotlight, type SpotlightAddedEvent, type SpotlightRemovedEvent, type StatsMonitorOptions, type StatsMonitorState, TYPES, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, type VideoEnabledEvent, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics, changeMediaDirection, compareLocalDevices, createACFCalculator, createMicAnalyser, createWorker, deprioritizeH264, detectMicrophoneNotWorking, enumerate, filterMidExtension, filterMsidSemantic, fromLocation, generateByteString, getConstraints, getCurrentPeerConnections, getDeviceData, getDisplayMedia, getHandler, getIssuesAndMetrics, getMediaConstraints, getMediaSettings, getOptimalBitrate, getPeerConnectionIndex, getStats, getStream, getStream2, getUpdatedDevices, getUpdatedStats, getUserMedia, hasGetDisplayMedia, ipRegex, isMobile, isRelayed, maybeRejectNoH264, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceSSRCs, replaceTracksInStream, _default as rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, variance };
|
|
1393
|
+
export { type AddSpotlightRequest, type AudioEnableRequest, type AudioEnableRequestedEvent, type AudioEnabledEvent, BandwidthTester, type ChatMessage, type ClientKickedEvent, type ClientLeftEvent, type ClientMetadataPayload, type ClientMetadataReceivedEvent, type ClientRole, type CloudRecordingStartedEvent, type Credentials, type CustomMediaStreamTrack, EVENTS, type GetConstraintsOptions, type GetDeviceDataResult, type GetMediaConstraintsOptions, type GetStreamOptions, type GetStreamResult, type GetUpdatedDevicesResult, type IdentifyDeviceRequest, type JoinRoomRequest, KNOCK_MESSAGES, KalmanFilter, type KnockAcceptedEvent, type KnockRejectedEvent, type KnockRoomRequest, type KnockerLeftEvent, Logger, MAXIMUM_TURN_BANDWIDTH, MAXIMUM_TURN_BANDWIDTH_UNLIMITED, MEDIA_JITTER_BUFFER_TARGET, type NewClientEvent, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, type RemoveSpotlightRequest, type RoleName, type RoomJoinedEvent, type RoomKnockedEvent, type RoomLockedEvent, type RoomSessionEndedEvent, type RtcClientConnectionStatusChangedPayload, RtcEventNames, type RtcEvents, type RtcLocalStreamTrackAddedPayload, type RtcLocalStreamTrackRemovedPayload, type RtcManager, type RtcManagerCreatedPayload, RtcManagerDispatcher, RtcStream, type RtcStreamAddedPayload, STREAM_TYPES, type ScreenshareStartedEvent, type ScreenshareStoppedEvent, type SendClientMetadataRequest, ServerSocket, Session, SfuV2Parser, type SignalClient, type SignalEvents, type SignalKnocker, type SignalRequests, type SocketConf, type SocketManager, type Spotlight, type SpotlightAddedEvent, type SpotlightRemovedEvent, type StatsMonitorOptions, type StatsMonitorState, TYPES, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, type VideoEnabledEvent, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics, changeMediaDirection, compareLocalDevices, createACFCalculator, createMicAnalyser, createWorker, deprioritizeH264, detectMicrophoneNotWorking, enumerate, filterMidExtension, filterMsidSemantic, fromLocation, generateByteString, getConstraints, getCurrentPeerConnections, getDeviceData, getDisplayMedia, getHandler, getIssuesAndMetrics, getMediaConstraints, getMediaSettings, getOptimalBitrate, getPeerConnectionIndex, getStats, getStream, getStream2, getUpdatedDevices, getUpdatedStats, getUserMedia, hasGetDisplayMedia, ipRegex, isMobile, isRelayed, maybeRejectNoH264, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceSSRCs, replaceTracksInStream, _default as rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, variance };
|
package/dist/index.d.mts
CHANGED
|
@@ -128,7 +128,7 @@ interface RtcManager {
|
|
|
128
128
|
addNewStream(streamId: string, stream: MediaStream, isAudioEnabled: boolean, isVideoEnabled: boolean): void;
|
|
129
129
|
disconnect(streamId: string, activeBreakout: boolean | null, eventClaim?: string): void;
|
|
130
130
|
disconnectAll(): void;
|
|
131
|
-
replaceTrack(oldTrack:
|
|
131
|
+
replaceTrack(oldTrack: CustomMediaStreamTrack, newTrack: CustomMediaStreamTrack): void;
|
|
132
132
|
removeStream(streamId: string, _stream: MediaStream, requestedByClientId: string | null): void;
|
|
133
133
|
shouldAcceptStreamsFromBothSides?: () => boolean;
|
|
134
134
|
updateStreamResolution(streamId: string, ignored: null, resolution: {
|
|
@@ -263,6 +263,9 @@ type GetDeviceDataResult = {
|
|
|
263
263
|
kind: string;
|
|
264
264
|
};
|
|
265
265
|
};
|
|
266
|
+
interface CustomMediaStreamTrack extends MediaStreamTrack {
|
|
267
|
+
replacement?: boolean;
|
|
268
|
+
}
|
|
266
269
|
|
|
267
270
|
declare function getMediaConstraints({ disableAEC, disableAGC, hd, lax, lowDataMode, preferredDeviceIds, resolution, simulcast, widescreen, }: GetMediaConstraintsOptions): any;
|
|
268
271
|
declare function getConstraints({ devices, videoId, audioId, options, type }: GetConstraintsOptions): any;
|
|
@@ -327,6 +330,7 @@ declare class P2pRtcManager implements RtcManager {
|
|
|
327
330
|
};
|
|
328
331
|
_pendingActionsForConnectedPeerConnections: any[];
|
|
329
332
|
_audioTrackOnEnded: () => void;
|
|
333
|
+
_videoTrackOnEnded: () => void;
|
|
330
334
|
totalSessionsCreated: number;
|
|
331
335
|
_iceServers: any;
|
|
332
336
|
_sfuServer: any;
|
|
@@ -356,7 +360,7 @@ declare class P2pRtcManager implements RtcManager {
|
|
|
356
360
|
supportsScreenShareAudio(): boolean;
|
|
357
361
|
maybeRestrictRelayBandwidth(session: any): void;
|
|
358
362
|
addNewStream(streamId: string, stream: MediaStream): void;
|
|
359
|
-
replaceTrack(oldTrack:
|
|
363
|
+
replaceTrack(oldTrack: CustomMediaStreamTrack, newTrack: CustomMediaStreamTrack): Promise<any[]>;
|
|
360
364
|
accept({ clientId, shouldAddLocalVideo }: {
|
|
361
365
|
clientId: string;
|
|
362
366
|
shouldAddLocalVideo?: boolean;
|
|
@@ -412,6 +416,8 @@ declare class P2pRtcManager implements RtcManager {
|
|
|
412
416
|
_clearMediaServersRefresh(): void;
|
|
413
417
|
_startMonitoringAudioTrack(track: any): void;
|
|
414
418
|
_stopMonitoringAudioTrack(track: any): void;
|
|
419
|
+
_startMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
420
|
+
_stopMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
415
421
|
_connect(clientId: string): Promise<any>;
|
|
416
422
|
_maybeRestartIce(clientId: string, session: any): void;
|
|
417
423
|
_setCodecPreferences(pc: any, vp9On: any, av1On: any, redOn: any): void;
|
|
@@ -841,6 +847,7 @@ declare const _default: {
|
|
|
841
847
|
ICE_RESTART: string;
|
|
842
848
|
MICROPHONE_NOT_WORKING: string;
|
|
843
849
|
MICROPHONE_STOPPED_WORKING: string;
|
|
850
|
+
CAMERA_STOPPED_WORKING: string;
|
|
844
851
|
NEW_PC: string;
|
|
845
852
|
SFU_CONNECTION_OPEN: string;
|
|
846
853
|
SFU_CONNECTION_CLOSED: string;
|
|
@@ -1090,6 +1097,7 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1090
1097
|
_colocation: any;
|
|
1091
1098
|
_stopCameraTimeout: any;
|
|
1092
1099
|
_audioTrackOnEnded: any;
|
|
1100
|
+
_videoTrackOnEnded: any;
|
|
1093
1101
|
_socketListenerDeregisterFunctions: any;
|
|
1094
1102
|
_reconnect: any;
|
|
1095
1103
|
_reconnectTimeOut: any;
|
|
@@ -1150,7 +1158,7 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1150
1158
|
setRemoteScreenshareVideoTrackIds(): void;
|
|
1151
1159
|
setRoomSessionId(roomSessionId: string): void;
|
|
1152
1160
|
disconnect(clientIdOrStreamId: string, _activeBreakout: any, eventClaim?: string): void;
|
|
1153
|
-
replaceTrack(oldTrack:
|
|
1161
|
+
replaceTrack(oldTrack: CustomMediaStreamTrack | null, track: CustomMediaStreamTrack): void;
|
|
1154
1162
|
removeStream(streamId: string, _stream: MediaStream, requestedByClientId: string): void;
|
|
1155
1163
|
_onMicAnalyserScoreUpdated(data: any): void;
|
|
1156
1164
|
addNewStream(streamId: string, stream: MediaStream, audioPaused: boolean, videoPaused: boolean): void;
|
|
@@ -1178,6 +1186,8 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1178
1186
|
rtcStatsReconnect(): void;
|
|
1179
1187
|
_startMonitoringAudioTrack(track: MediaStreamTrack): void;
|
|
1180
1188
|
_stopMonitoringAudioTrack(track: MediaStreamTrack): void;
|
|
1189
|
+
_startMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
1190
|
+
_stopMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
1181
1191
|
_onMessage(message: any): Promise<void>;
|
|
1182
1192
|
_onConsumerReady(options: any): Promise<void>;
|
|
1183
1193
|
_onConsumerClosed({ consumerId, reason }: {
|
|
@@ -1380,4 +1390,4 @@ declare class RtcStream {
|
|
|
1380
1390
|
static getTypeFromId(id: string): string;
|
|
1381
1391
|
}
|
|
1382
1392
|
|
|
1383
|
-
export { type AddSpotlightRequest, type AudioEnableRequest, type AudioEnableRequestedEvent, type AudioEnabledEvent, BandwidthTester, type ChatMessage, type ClientKickedEvent, type ClientLeftEvent, type ClientMetadataPayload, type ClientMetadataReceivedEvent, type ClientRole, type CloudRecordingStartedEvent, type Credentials, EVENTS, type GetConstraintsOptions, type GetDeviceDataResult, type GetMediaConstraintsOptions, type GetStreamOptions, type GetStreamResult, type GetUpdatedDevicesResult, type IdentifyDeviceRequest, type JoinRoomRequest, KNOCK_MESSAGES, KalmanFilter, type KnockAcceptedEvent, type KnockRejectedEvent, type KnockRoomRequest, type KnockerLeftEvent, Logger, MAXIMUM_TURN_BANDWIDTH, MAXIMUM_TURN_BANDWIDTH_UNLIMITED, MEDIA_JITTER_BUFFER_TARGET, type NewClientEvent, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, type RemoveSpotlightRequest, type RoleName, type RoomJoinedEvent, type RoomKnockedEvent, type RoomLockedEvent, type RoomSessionEndedEvent, type RtcClientConnectionStatusChangedPayload, RtcEventNames, type RtcEvents, type RtcLocalStreamTrackAddedPayload, type RtcLocalStreamTrackRemovedPayload, type RtcManager, type RtcManagerCreatedPayload, RtcManagerDispatcher, RtcStream, type RtcStreamAddedPayload, STREAM_TYPES, type ScreenshareStartedEvent, type ScreenshareStoppedEvent, type SendClientMetadataRequest, ServerSocket, Session, SfuV2Parser, type SignalClient, type SignalEvents, type SignalKnocker, type SignalRequests, type SocketConf, type SocketManager, type Spotlight, type SpotlightAddedEvent, type SpotlightRemovedEvent, type StatsMonitorOptions, type StatsMonitorState, TYPES, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, type VideoEnabledEvent, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics, changeMediaDirection, compareLocalDevices, createACFCalculator, createMicAnalyser, createWorker, deprioritizeH264, detectMicrophoneNotWorking, enumerate, filterMidExtension, filterMsidSemantic, fromLocation, generateByteString, getConstraints, getCurrentPeerConnections, getDeviceData, getDisplayMedia, getHandler, getIssuesAndMetrics, getMediaConstraints, getMediaSettings, getOptimalBitrate, getPeerConnectionIndex, getStats, getStream, getStream2, getUpdatedDevices, getUpdatedStats, getUserMedia, hasGetDisplayMedia, ipRegex, isMobile, isRelayed, maybeRejectNoH264, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceSSRCs, replaceTracksInStream, _default as rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, variance };
|
|
1393
|
+
export { type AddSpotlightRequest, type AudioEnableRequest, type AudioEnableRequestedEvent, type AudioEnabledEvent, BandwidthTester, type ChatMessage, type ClientKickedEvent, type ClientLeftEvent, type ClientMetadataPayload, type ClientMetadataReceivedEvent, type ClientRole, type CloudRecordingStartedEvent, type Credentials, type CustomMediaStreamTrack, EVENTS, type GetConstraintsOptions, type GetDeviceDataResult, type GetMediaConstraintsOptions, type GetStreamOptions, type GetStreamResult, type GetUpdatedDevicesResult, type IdentifyDeviceRequest, type JoinRoomRequest, KNOCK_MESSAGES, KalmanFilter, type KnockAcceptedEvent, type KnockRejectedEvent, type KnockRoomRequest, type KnockerLeftEvent, Logger, MAXIMUM_TURN_BANDWIDTH, MAXIMUM_TURN_BANDWIDTH_UNLIMITED, MEDIA_JITTER_BUFFER_TARGET, type NewClientEvent, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, type RemoveSpotlightRequest, type RoleName, type RoomJoinedEvent, type RoomKnockedEvent, type RoomLockedEvent, type RoomSessionEndedEvent, type RtcClientConnectionStatusChangedPayload, RtcEventNames, type RtcEvents, type RtcLocalStreamTrackAddedPayload, type RtcLocalStreamTrackRemovedPayload, type RtcManager, type RtcManagerCreatedPayload, RtcManagerDispatcher, RtcStream, type RtcStreamAddedPayload, STREAM_TYPES, type ScreenshareStartedEvent, type ScreenshareStoppedEvent, type SendClientMetadataRequest, ServerSocket, Session, SfuV2Parser, type SignalClient, type SignalEvents, type SignalKnocker, type SignalRequests, type SocketConf, type SocketManager, type Spotlight, type SpotlightAddedEvent, type SpotlightRemovedEvent, type StatsMonitorOptions, type StatsMonitorState, TYPES, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, type VideoEnabledEvent, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics, changeMediaDirection, compareLocalDevices, createACFCalculator, createMicAnalyser, createWorker, deprioritizeH264, detectMicrophoneNotWorking, enumerate, filterMidExtension, filterMsidSemantic, fromLocation, generateByteString, getConstraints, getCurrentPeerConnections, getDeviceData, getDisplayMedia, getHandler, getIssuesAndMetrics, getMediaConstraints, getMediaSettings, getOptimalBitrate, getPeerConnectionIndex, getStats, getStream, getStream2, getUpdatedDevices, getUpdatedStats, getUserMedia, hasGetDisplayMedia, ipRegex, isMobile, isRelayed, maybeRejectNoH264, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceSSRCs, replaceTracksInStream, _default as rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, variance };
|
package/dist/index.d.ts
CHANGED
|
@@ -128,7 +128,7 @@ interface RtcManager {
|
|
|
128
128
|
addNewStream(streamId: string, stream: MediaStream, isAudioEnabled: boolean, isVideoEnabled: boolean): void;
|
|
129
129
|
disconnect(streamId: string, activeBreakout: boolean | null, eventClaim?: string): void;
|
|
130
130
|
disconnectAll(): void;
|
|
131
|
-
replaceTrack(oldTrack:
|
|
131
|
+
replaceTrack(oldTrack: CustomMediaStreamTrack, newTrack: CustomMediaStreamTrack): void;
|
|
132
132
|
removeStream(streamId: string, _stream: MediaStream, requestedByClientId: string | null): void;
|
|
133
133
|
shouldAcceptStreamsFromBothSides?: () => boolean;
|
|
134
134
|
updateStreamResolution(streamId: string, ignored: null, resolution: {
|
|
@@ -263,6 +263,9 @@ type GetDeviceDataResult = {
|
|
|
263
263
|
kind: string;
|
|
264
264
|
};
|
|
265
265
|
};
|
|
266
|
+
interface CustomMediaStreamTrack extends MediaStreamTrack {
|
|
267
|
+
replacement?: boolean;
|
|
268
|
+
}
|
|
266
269
|
|
|
267
270
|
declare function getMediaConstraints({ disableAEC, disableAGC, hd, lax, lowDataMode, preferredDeviceIds, resolution, simulcast, widescreen, }: GetMediaConstraintsOptions): any;
|
|
268
271
|
declare function getConstraints({ devices, videoId, audioId, options, type }: GetConstraintsOptions): any;
|
|
@@ -327,6 +330,7 @@ declare class P2pRtcManager implements RtcManager {
|
|
|
327
330
|
};
|
|
328
331
|
_pendingActionsForConnectedPeerConnections: any[];
|
|
329
332
|
_audioTrackOnEnded: () => void;
|
|
333
|
+
_videoTrackOnEnded: () => void;
|
|
330
334
|
totalSessionsCreated: number;
|
|
331
335
|
_iceServers: any;
|
|
332
336
|
_sfuServer: any;
|
|
@@ -356,7 +360,7 @@ declare class P2pRtcManager implements RtcManager {
|
|
|
356
360
|
supportsScreenShareAudio(): boolean;
|
|
357
361
|
maybeRestrictRelayBandwidth(session: any): void;
|
|
358
362
|
addNewStream(streamId: string, stream: MediaStream): void;
|
|
359
|
-
replaceTrack(oldTrack:
|
|
363
|
+
replaceTrack(oldTrack: CustomMediaStreamTrack, newTrack: CustomMediaStreamTrack): Promise<any[]>;
|
|
360
364
|
accept({ clientId, shouldAddLocalVideo }: {
|
|
361
365
|
clientId: string;
|
|
362
366
|
shouldAddLocalVideo?: boolean;
|
|
@@ -412,6 +416,8 @@ declare class P2pRtcManager implements RtcManager {
|
|
|
412
416
|
_clearMediaServersRefresh(): void;
|
|
413
417
|
_startMonitoringAudioTrack(track: any): void;
|
|
414
418
|
_stopMonitoringAudioTrack(track: any): void;
|
|
419
|
+
_startMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
420
|
+
_stopMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
415
421
|
_connect(clientId: string): Promise<any>;
|
|
416
422
|
_maybeRestartIce(clientId: string, session: any): void;
|
|
417
423
|
_setCodecPreferences(pc: any, vp9On: any, av1On: any, redOn: any): void;
|
|
@@ -841,6 +847,7 @@ declare const _default: {
|
|
|
841
847
|
ICE_RESTART: string;
|
|
842
848
|
MICROPHONE_NOT_WORKING: string;
|
|
843
849
|
MICROPHONE_STOPPED_WORKING: string;
|
|
850
|
+
CAMERA_STOPPED_WORKING: string;
|
|
844
851
|
NEW_PC: string;
|
|
845
852
|
SFU_CONNECTION_OPEN: string;
|
|
846
853
|
SFU_CONNECTION_CLOSED: string;
|
|
@@ -1090,6 +1097,7 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1090
1097
|
_colocation: any;
|
|
1091
1098
|
_stopCameraTimeout: any;
|
|
1092
1099
|
_audioTrackOnEnded: any;
|
|
1100
|
+
_videoTrackOnEnded: any;
|
|
1093
1101
|
_socketListenerDeregisterFunctions: any;
|
|
1094
1102
|
_reconnect: any;
|
|
1095
1103
|
_reconnectTimeOut: any;
|
|
@@ -1150,7 +1158,7 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1150
1158
|
setRemoteScreenshareVideoTrackIds(): void;
|
|
1151
1159
|
setRoomSessionId(roomSessionId: string): void;
|
|
1152
1160
|
disconnect(clientIdOrStreamId: string, _activeBreakout: any, eventClaim?: string): void;
|
|
1153
|
-
replaceTrack(oldTrack:
|
|
1161
|
+
replaceTrack(oldTrack: CustomMediaStreamTrack | null, track: CustomMediaStreamTrack): void;
|
|
1154
1162
|
removeStream(streamId: string, _stream: MediaStream, requestedByClientId: string): void;
|
|
1155
1163
|
_onMicAnalyserScoreUpdated(data: any): void;
|
|
1156
1164
|
addNewStream(streamId: string, stream: MediaStream, audioPaused: boolean, videoPaused: boolean): void;
|
|
@@ -1178,6 +1186,8 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1178
1186
|
rtcStatsReconnect(): void;
|
|
1179
1187
|
_startMonitoringAudioTrack(track: MediaStreamTrack): void;
|
|
1180
1188
|
_stopMonitoringAudioTrack(track: MediaStreamTrack): void;
|
|
1189
|
+
_startMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
1190
|
+
_stopMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
1181
1191
|
_onMessage(message: any): Promise<void>;
|
|
1182
1192
|
_onConsumerReady(options: any): Promise<void>;
|
|
1183
1193
|
_onConsumerClosed({ consumerId, reason }: {
|
|
@@ -1380,4 +1390,4 @@ declare class RtcStream {
|
|
|
1380
1390
|
static getTypeFromId(id: string): string;
|
|
1381
1391
|
}
|
|
1382
1392
|
|
|
1383
|
-
export { type AddSpotlightRequest, type AudioEnableRequest, type AudioEnableRequestedEvent, type AudioEnabledEvent, BandwidthTester, type ChatMessage, type ClientKickedEvent, type ClientLeftEvent, type ClientMetadataPayload, type ClientMetadataReceivedEvent, type ClientRole, type CloudRecordingStartedEvent, type Credentials, EVENTS, type GetConstraintsOptions, type GetDeviceDataResult, type GetMediaConstraintsOptions, type GetStreamOptions, type GetStreamResult, type GetUpdatedDevicesResult, type IdentifyDeviceRequest, type JoinRoomRequest, KNOCK_MESSAGES, KalmanFilter, type KnockAcceptedEvent, type KnockRejectedEvent, type KnockRoomRequest, type KnockerLeftEvent, Logger, MAXIMUM_TURN_BANDWIDTH, MAXIMUM_TURN_BANDWIDTH_UNLIMITED, MEDIA_JITTER_BUFFER_TARGET, type NewClientEvent, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, type RemoveSpotlightRequest, type RoleName, type RoomJoinedEvent, type RoomKnockedEvent, type RoomLockedEvent, type RoomSessionEndedEvent, type RtcClientConnectionStatusChangedPayload, RtcEventNames, type RtcEvents, type RtcLocalStreamTrackAddedPayload, type RtcLocalStreamTrackRemovedPayload, type RtcManager, type RtcManagerCreatedPayload, RtcManagerDispatcher, RtcStream, type RtcStreamAddedPayload, STREAM_TYPES, type ScreenshareStartedEvent, type ScreenshareStoppedEvent, type SendClientMetadataRequest, ServerSocket, Session, SfuV2Parser, type SignalClient, type SignalEvents, type SignalKnocker, type SignalRequests, type SocketConf, type SocketManager, type Spotlight, type SpotlightAddedEvent, type SpotlightRemovedEvent, type StatsMonitorOptions, type StatsMonitorState, TYPES, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, type VideoEnabledEvent, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics, changeMediaDirection, compareLocalDevices, createACFCalculator, createMicAnalyser, createWorker, deprioritizeH264, detectMicrophoneNotWorking, enumerate, filterMidExtension, filterMsidSemantic, fromLocation, generateByteString, getConstraints, getCurrentPeerConnections, getDeviceData, getDisplayMedia, getHandler, getIssuesAndMetrics, getMediaConstraints, getMediaSettings, getOptimalBitrate, getPeerConnectionIndex, getStats, getStream, getStream2, getUpdatedDevices, getUpdatedStats, getUserMedia, hasGetDisplayMedia, ipRegex, isMobile, isRelayed, maybeRejectNoH264, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceSSRCs, replaceTracksInStream, _default as rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, variance };
|
|
1393
|
+
export { type AddSpotlightRequest, type AudioEnableRequest, type AudioEnableRequestedEvent, type AudioEnabledEvent, BandwidthTester, type ChatMessage, type ClientKickedEvent, type ClientLeftEvent, type ClientMetadataPayload, type ClientMetadataReceivedEvent, type ClientRole, type CloudRecordingStartedEvent, type Credentials, type CustomMediaStreamTrack, EVENTS, type GetConstraintsOptions, type GetDeviceDataResult, type GetMediaConstraintsOptions, type GetStreamOptions, type GetStreamResult, type GetUpdatedDevicesResult, type IdentifyDeviceRequest, type JoinRoomRequest, KNOCK_MESSAGES, KalmanFilter, type KnockAcceptedEvent, type KnockRejectedEvent, type KnockRoomRequest, type KnockerLeftEvent, Logger, MAXIMUM_TURN_BANDWIDTH, MAXIMUM_TURN_BANDWIDTH_UNLIMITED, MEDIA_JITTER_BUFFER_TARGET, type NewClientEvent, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, type RemoveSpotlightRequest, type RoleName, type RoomJoinedEvent, type RoomKnockedEvent, type RoomLockedEvent, type RoomSessionEndedEvent, type RtcClientConnectionStatusChangedPayload, RtcEventNames, type RtcEvents, type RtcLocalStreamTrackAddedPayload, type RtcLocalStreamTrackRemovedPayload, type RtcManager, type RtcManagerCreatedPayload, RtcManagerDispatcher, RtcStream, type RtcStreamAddedPayload, STREAM_TYPES, type ScreenshareStartedEvent, type ScreenshareStoppedEvent, type SendClientMetadataRequest, ServerSocket, Session, SfuV2Parser, type SignalClient, type SignalEvents, type SignalKnocker, type SignalRequests, type SocketConf, type SocketManager, type Spotlight, type SpotlightAddedEvent, type SpotlightRemovedEvent, type StatsMonitorOptions, type StatsMonitorState, TYPES, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, type VideoEnabledEvent, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics, changeMediaDirection, compareLocalDevices, createACFCalculator, createMicAnalyser, createWorker, deprioritizeH264, detectMicrophoneNotWorking, enumerate, filterMidExtension, filterMsidSemantic, fromLocation, generateByteString, getConstraints, getCurrentPeerConnections, getDeviceData, getDisplayMedia, getHandler, getIssuesAndMetrics, getMediaConstraints, getMediaSettings, getOptimalBitrate, getPeerConnectionIndex, getStats, getStream, getStream2, getUpdatedDevices, getUpdatedStats, getUserMedia, hasGetDisplayMedia, ipRegex, isMobile, isRelayed, maybeRejectNoH264, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceSSRCs, replaceTracksInStream, _default as rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, variance };
|
package/dist/index.mjs
CHANGED
|
@@ -3457,6 +3457,7 @@ var rtcManagerEvents = {
|
|
|
3457
3457
|
ICE_RESTART: "ice_restart",
|
|
3458
3458
|
MICROPHONE_NOT_WORKING: "microphone_not_working",
|
|
3459
3459
|
MICROPHONE_STOPPED_WORKING: "microphone_stopped_working",
|
|
3460
|
+
CAMERA_STOPPED_WORKING: "camera_stopped_working",
|
|
3460
3461
|
NEW_PC: "new_pc",
|
|
3461
3462
|
SFU_CONNECTION_OPEN: "sfu_connection_open",
|
|
3462
3463
|
SFU_CONNECTION_CLOSED: "sfu_connection_closed",
|
|
@@ -3503,6 +3504,10 @@ class P2pRtcManager {
|
|
|
3503
3504
|
rtcStats.sendEvent("audio_ended", { unloading: unloading$1 });
|
|
3504
3505
|
this._emit(rtcManagerEvents.MICROPHONE_STOPPED_WORKING, {});
|
|
3505
3506
|
};
|
|
3507
|
+
this._videoTrackOnEnded = () => {
|
|
3508
|
+
rtcStats.sendEvent("video_ended", { unloading: unloading$1 });
|
|
3509
|
+
this._emit(rtcManagerEvents.CAMERA_STOPPED_WORKING, {});
|
|
3510
|
+
};
|
|
3506
3511
|
this._updateAndScheduleMediaServersRefresh({
|
|
3507
3512
|
sfuServer,
|
|
3508
3513
|
iceServers: iceServers.iceServers || [],
|
|
@@ -3530,9 +3535,13 @@ class P2pRtcManager {
|
|
|
3530
3535
|
if (streamId === CAMERA_STREAM_ID) {
|
|
3531
3536
|
this._addStreamToPeerConnections(stream);
|
|
3532
3537
|
const [audioTrack] = stream.getAudioTracks();
|
|
3538
|
+
const videoTrack = stream.getVideoTracks()[0];
|
|
3533
3539
|
if (audioTrack) {
|
|
3534
3540
|
this._startMonitoringAudioTrack(audioTrack);
|
|
3535
3541
|
}
|
|
3542
|
+
if (videoTrack && !videoTrack.replacement) {
|
|
3543
|
+
this._startMonitoringVideoTrack(videoTrack);
|
|
3544
|
+
}
|
|
3536
3545
|
if (this._localStreamDeregisterFunction) {
|
|
3537
3546
|
this._localStreamDeregisterFunction();
|
|
3538
3547
|
this._localStreamDeregisterFunction = null;
|
|
@@ -3555,9 +3564,15 @@ class P2pRtcManager {
|
|
|
3555
3564
|
if (oldTrack && oldTrack.kind === "audio") {
|
|
3556
3565
|
this._stopMonitoringAudioTrack(oldTrack);
|
|
3557
3566
|
}
|
|
3567
|
+
if (oldTrack && oldTrack.kind === "video" && !newTrack.replacement) {
|
|
3568
|
+
this._stopMonitoringVideoTrack(oldTrack);
|
|
3569
|
+
}
|
|
3558
3570
|
if (newTrack && newTrack.kind === "audio") {
|
|
3559
3571
|
this._startMonitoringAudioTrack(newTrack);
|
|
3560
3572
|
}
|
|
3573
|
+
if (newTrack.kind === "video" && !newTrack.replacement) {
|
|
3574
|
+
this._startMonitoringVideoTrack(newTrack);
|
|
3575
|
+
}
|
|
3561
3576
|
return this._replaceTrackToPeerConnections(oldTrack, newTrack);
|
|
3562
3577
|
}
|
|
3563
3578
|
accept({ clientId, shouldAddLocalVideo }) {
|
|
@@ -4076,6 +4091,12 @@ class P2pRtcManager {
|
|
|
4076
4091
|
_stopMonitoringAudioTrack(track) {
|
|
4077
4092
|
track.removeEventListener("ended", this._audioTrackOnEnded);
|
|
4078
4093
|
}
|
|
4094
|
+
_startMonitoringVideoTrack(track) {
|
|
4095
|
+
track.addEventListener("ended", this._videoTrackOnEnded);
|
|
4096
|
+
}
|
|
4097
|
+
_stopMonitoringVideoTrack(track) {
|
|
4098
|
+
track.removeEventListener("ended", this._videoTrackOnEnded);
|
|
4099
|
+
}
|
|
4079
4100
|
_connect(clientId) {
|
|
4080
4101
|
this.rtcStatsReconnect();
|
|
4081
4102
|
const shouldAddLocalVideo = true;
|
|
@@ -4429,10 +4450,12 @@ class P2pRtcManager {
|
|
|
4429
4450
|
}
|
|
4430
4451
|
}
|
|
4431
4452
|
stopOrResumeVideo(localStream, enable) {
|
|
4453
|
+
var _a;
|
|
4432
4454
|
if (!["chrome", "safari"].includes(browserName$1)) {
|
|
4433
4455
|
return;
|
|
4434
4456
|
}
|
|
4435
4457
|
if (enable === false) {
|
|
4458
|
+
const stopCameraDelay = ((_a = localStream.getVideoTracks().find((t) => !t.enabled)) === null || _a === void 0 ? void 0 : _a.readyState) === "ended" ? 0 : 5000;
|
|
4436
4459
|
setTimeout(() => {
|
|
4437
4460
|
localStream.getVideoTracks().forEach((track) => {
|
|
4438
4461
|
if (track.enabled === false) {
|
|
@@ -4445,7 +4468,7 @@ class P2pRtcManager {
|
|
|
4445
4468
|
this._handleStopOrResumeVideo({ enable, track });
|
|
4446
4469
|
}
|
|
4447
4470
|
});
|
|
4448
|
-
},
|
|
4471
|
+
}, stopCameraDelay);
|
|
4449
4472
|
}
|
|
4450
4473
|
else {
|
|
4451
4474
|
if (localStream.getVideoTracks().length === 0) {
|
|
@@ -4456,6 +4479,7 @@ class P2pRtcManager {
|
|
|
4456
4479
|
navigator.mediaDevices.getUserMedia({ video: constraints }).then((stream) => {
|
|
4457
4480
|
const track = stream.getVideoTracks()[0];
|
|
4458
4481
|
localStream.addTrack(track);
|
|
4482
|
+
this._startMonitoringVideoTrack(track);
|
|
4459
4483
|
this._emit(EVENTS.LOCAL_STREAM_TRACK_ADDED, {
|
|
4460
4484
|
streamId: localStream.id,
|
|
4461
4485
|
tracks: [track],
|
|
@@ -4969,6 +4993,10 @@ class VegaRtcManager {
|
|
|
4969
4993
|
rtcStats.sendEvent("audio_ended", { unloading });
|
|
4970
4994
|
this._emitToPWA(rtcManagerEvents.MICROPHONE_STOPPED_WORKING, {});
|
|
4971
4995
|
};
|
|
4996
|
+
this._videoTrackOnEnded = () => {
|
|
4997
|
+
rtcStats.sendEvent("video_ended", { unloading });
|
|
4998
|
+
this._emitToPWA(rtcManagerEvents.CAMERA_STOPPED_WORKING, {});
|
|
4999
|
+
};
|
|
4972
5000
|
this._updateAndScheduleMediaServersRefresh({
|
|
4973
5001
|
sfuServer,
|
|
4974
5002
|
iceServers: iceServers.iceServers || [],
|
|
@@ -5679,12 +5707,18 @@ class VegaRtcManager {
|
|
|
5679
5707
|
if (oldTrack && oldTrack.kind === "audio") {
|
|
5680
5708
|
this._stopMonitoringAudioTrack(oldTrack);
|
|
5681
5709
|
}
|
|
5710
|
+
if (oldTrack && oldTrack.kind === "video" && !track.replacement) {
|
|
5711
|
+
this._stopMonitoringVideoTrack(oldTrack);
|
|
5712
|
+
}
|
|
5682
5713
|
if (track.kind === "audio") {
|
|
5683
5714
|
this._startMonitoringAudioTrack(track);
|
|
5684
5715
|
this._micTrack = track;
|
|
5685
5716
|
this._replaceMicTrack();
|
|
5686
5717
|
}
|
|
5687
5718
|
if (track.kind === "video") {
|
|
5719
|
+
if (!track.replacement) {
|
|
5720
|
+
this._startMonitoringVideoTrack(track);
|
|
5721
|
+
}
|
|
5688
5722
|
this._webcamTrack = track;
|
|
5689
5723
|
this._replaceWebcamTrack();
|
|
5690
5724
|
}
|
|
@@ -5713,8 +5747,12 @@ class VegaRtcManager {
|
|
|
5713
5747
|
this._webcamPaused = videoPaused;
|
|
5714
5748
|
const videoTrack = stream.getVideoTracks()[0];
|
|
5715
5749
|
const audioTrack = stream.getAudioTracks()[0];
|
|
5716
|
-
if (videoTrack)
|
|
5750
|
+
if (videoTrack) {
|
|
5717
5751
|
this._sendWebcam(videoTrack);
|
|
5752
|
+
if (!videoTrack.replacement) {
|
|
5753
|
+
this._startMonitoringVideoTrack(videoTrack);
|
|
5754
|
+
}
|
|
5755
|
+
}
|
|
5718
5756
|
if (audioTrack) {
|
|
5719
5757
|
this._sendMic(audioTrack);
|
|
5720
5758
|
this._syncMicAnalyser();
|
|
@@ -5777,6 +5815,7 @@ class VegaRtcManager {
|
|
|
5777
5815
|
}
|
|
5778
5816
|
}
|
|
5779
5817
|
stopOrResumeVideo(localStream, enable) {
|
|
5818
|
+
var _a;
|
|
5780
5819
|
logger$1.info("stopOrResumeVideo() [enable:%s]", enable);
|
|
5781
5820
|
this._webcamPaused = !enable;
|
|
5782
5821
|
this._pauseResumeWebcam();
|
|
@@ -5785,6 +5824,7 @@ class VegaRtcManager {
|
|
|
5785
5824
|
}
|
|
5786
5825
|
if (!enable) {
|
|
5787
5826
|
clearTimeout(this._stopCameraTimeout);
|
|
5827
|
+
const stopCameraDelay = ((_a = localStream.getVideoTracks().find((t) => !t.enabled)) === null || _a === void 0 ? void 0 : _a.readyState) === "ended" ? 0 : 5000;
|
|
5788
5828
|
this._stopCameraTimeout = setTimeout(() => {
|
|
5789
5829
|
localStream.getVideoTracks().forEach((track) => {
|
|
5790
5830
|
if (track.enabled === false) {
|
|
@@ -5797,13 +5837,14 @@ class VegaRtcManager {
|
|
|
5797
5837
|
this._handleStopOrResumeVideo({ enable, track });
|
|
5798
5838
|
}
|
|
5799
5839
|
});
|
|
5800
|
-
},
|
|
5840
|
+
}, stopCameraDelay);
|
|
5801
5841
|
}
|
|
5802
5842
|
else if (localStream.getVideoTracks().length === 0) {
|
|
5803
5843
|
const constraints = this._webrtcProvider.getMediaConstraints().video;
|
|
5804
5844
|
navigator.mediaDevices.getUserMedia({ video: constraints }).then((stream) => {
|
|
5805
5845
|
const track = stream.getVideoTracks()[0];
|
|
5806
5846
|
localStream.addTrack(track);
|
|
5847
|
+
this._startMonitoringVideoTrack(track);
|
|
5807
5848
|
this._emitToPWA(EVENTS.LOCAL_STREAM_TRACK_ADDED, {
|
|
5808
5849
|
streamId: localStream.id,
|
|
5809
5850
|
tracks: [track],
|
|
@@ -5904,6 +5945,12 @@ class VegaRtcManager {
|
|
|
5904
5945
|
_stopMonitoringAudioTrack(track) {
|
|
5905
5946
|
track.removeEventListener("ended", this._audioTrackOnEnded);
|
|
5906
5947
|
}
|
|
5948
|
+
_startMonitoringVideoTrack(track) {
|
|
5949
|
+
track.addEventListener("ended", this._videoTrackOnEnded);
|
|
5950
|
+
}
|
|
5951
|
+
_stopMonitoringVideoTrack(track) {
|
|
5952
|
+
track.removeEventListener("ended", this._videoTrackOnEnded);
|
|
5953
|
+
}
|
|
5907
5954
|
_onMessage(message) {
|
|
5908
5955
|
return __awaiter(this, void 0, void 0, function* () {
|
|
5909
5956
|
const { method, data } = message;
|
package/dist/legacy-esm.js
CHANGED
|
@@ -3457,6 +3457,7 @@ var rtcManagerEvents = {
|
|
|
3457
3457
|
ICE_RESTART: "ice_restart",
|
|
3458
3458
|
MICROPHONE_NOT_WORKING: "microphone_not_working",
|
|
3459
3459
|
MICROPHONE_STOPPED_WORKING: "microphone_stopped_working",
|
|
3460
|
+
CAMERA_STOPPED_WORKING: "camera_stopped_working",
|
|
3460
3461
|
NEW_PC: "new_pc",
|
|
3461
3462
|
SFU_CONNECTION_OPEN: "sfu_connection_open",
|
|
3462
3463
|
SFU_CONNECTION_CLOSED: "sfu_connection_closed",
|
|
@@ -3503,6 +3504,10 @@ class P2pRtcManager {
|
|
|
3503
3504
|
rtcStats.sendEvent("audio_ended", { unloading: unloading$1 });
|
|
3504
3505
|
this._emit(rtcManagerEvents.MICROPHONE_STOPPED_WORKING, {});
|
|
3505
3506
|
};
|
|
3507
|
+
this._videoTrackOnEnded = () => {
|
|
3508
|
+
rtcStats.sendEvent("video_ended", { unloading: unloading$1 });
|
|
3509
|
+
this._emit(rtcManagerEvents.CAMERA_STOPPED_WORKING, {});
|
|
3510
|
+
};
|
|
3506
3511
|
this._updateAndScheduleMediaServersRefresh({
|
|
3507
3512
|
sfuServer,
|
|
3508
3513
|
iceServers: iceServers.iceServers || [],
|
|
@@ -3530,9 +3535,13 @@ class P2pRtcManager {
|
|
|
3530
3535
|
if (streamId === CAMERA_STREAM_ID) {
|
|
3531
3536
|
this._addStreamToPeerConnections(stream);
|
|
3532
3537
|
const [audioTrack] = stream.getAudioTracks();
|
|
3538
|
+
const videoTrack = stream.getVideoTracks()[0];
|
|
3533
3539
|
if (audioTrack) {
|
|
3534
3540
|
this._startMonitoringAudioTrack(audioTrack);
|
|
3535
3541
|
}
|
|
3542
|
+
if (videoTrack && !videoTrack.replacement) {
|
|
3543
|
+
this._startMonitoringVideoTrack(videoTrack);
|
|
3544
|
+
}
|
|
3536
3545
|
if (this._localStreamDeregisterFunction) {
|
|
3537
3546
|
this._localStreamDeregisterFunction();
|
|
3538
3547
|
this._localStreamDeregisterFunction = null;
|
|
@@ -3555,9 +3564,15 @@ class P2pRtcManager {
|
|
|
3555
3564
|
if (oldTrack && oldTrack.kind === "audio") {
|
|
3556
3565
|
this._stopMonitoringAudioTrack(oldTrack);
|
|
3557
3566
|
}
|
|
3567
|
+
if (oldTrack && oldTrack.kind === "video" && !newTrack.replacement) {
|
|
3568
|
+
this._stopMonitoringVideoTrack(oldTrack);
|
|
3569
|
+
}
|
|
3558
3570
|
if (newTrack && newTrack.kind === "audio") {
|
|
3559
3571
|
this._startMonitoringAudioTrack(newTrack);
|
|
3560
3572
|
}
|
|
3573
|
+
if (newTrack.kind === "video" && !newTrack.replacement) {
|
|
3574
|
+
this._startMonitoringVideoTrack(newTrack);
|
|
3575
|
+
}
|
|
3561
3576
|
return this._replaceTrackToPeerConnections(oldTrack, newTrack);
|
|
3562
3577
|
}
|
|
3563
3578
|
accept({ clientId, shouldAddLocalVideo }) {
|
|
@@ -4076,6 +4091,12 @@ class P2pRtcManager {
|
|
|
4076
4091
|
_stopMonitoringAudioTrack(track) {
|
|
4077
4092
|
track.removeEventListener("ended", this._audioTrackOnEnded);
|
|
4078
4093
|
}
|
|
4094
|
+
_startMonitoringVideoTrack(track) {
|
|
4095
|
+
track.addEventListener("ended", this._videoTrackOnEnded);
|
|
4096
|
+
}
|
|
4097
|
+
_stopMonitoringVideoTrack(track) {
|
|
4098
|
+
track.removeEventListener("ended", this._videoTrackOnEnded);
|
|
4099
|
+
}
|
|
4079
4100
|
_connect(clientId) {
|
|
4080
4101
|
this.rtcStatsReconnect();
|
|
4081
4102
|
const shouldAddLocalVideo = true;
|
|
@@ -4429,10 +4450,12 @@ class P2pRtcManager {
|
|
|
4429
4450
|
}
|
|
4430
4451
|
}
|
|
4431
4452
|
stopOrResumeVideo(localStream, enable) {
|
|
4453
|
+
var _a;
|
|
4432
4454
|
if (!["chrome", "safari"].includes(browserName$1)) {
|
|
4433
4455
|
return;
|
|
4434
4456
|
}
|
|
4435
4457
|
if (enable === false) {
|
|
4458
|
+
const stopCameraDelay = ((_a = localStream.getVideoTracks().find((t) => !t.enabled)) === null || _a === void 0 ? void 0 : _a.readyState) === "ended" ? 0 : 5000;
|
|
4436
4459
|
setTimeout(() => {
|
|
4437
4460
|
localStream.getVideoTracks().forEach((track) => {
|
|
4438
4461
|
if (track.enabled === false) {
|
|
@@ -4445,7 +4468,7 @@ class P2pRtcManager {
|
|
|
4445
4468
|
this._handleStopOrResumeVideo({ enable, track });
|
|
4446
4469
|
}
|
|
4447
4470
|
});
|
|
4448
|
-
},
|
|
4471
|
+
}, stopCameraDelay);
|
|
4449
4472
|
}
|
|
4450
4473
|
else {
|
|
4451
4474
|
if (localStream.getVideoTracks().length === 0) {
|
|
@@ -4456,6 +4479,7 @@ class P2pRtcManager {
|
|
|
4456
4479
|
navigator.mediaDevices.getUserMedia({ video: constraints }).then((stream) => {
|
|
4457
4480
|
const track = stream.getVideoTracks()[0];
|
|
4458
4481
|
localStream.addTrack(track);
|
|
4482
|
+
this._startMonitoringVideoTrack(track);
|
|
4459
4483
|
this._emit(EVENTS.LOCAL_STREAM_TRACK_ADDED, {
|
|
4460
4484
|
streamId: localStream.id,
|
|
4461
4485
|
tracks: [track],
|
|
@@ -4969,6 +4993,10 @@ class VegaRtcManager {
|
|
|
4969
4993
|
rtcStats.sendEvent("audio_ended", { unloading });
|
|
4970
4994
|
this._emitToPWA(rtcManagerEvents.MICROPHONE_STOPPED_WORKING, {});
|
|
4971
4995
|
};
|
|
4996
|
+
this._videoTrackOnEnded = () => {
|
|
4997
|
+
rtcStats.sendEvent("video_ended", { unloading });
|
|
4998
|
+
this._emitToPWA(rtcManagerEvents.CAMERA_STOPPED_WORKING, {});
|
|
4999
|
+
};
|
|
4972
5000
|
this._updateAndScheduleMediaServersRefresh({
|
|
4973
5001
|
sfuServer,
|
|
4974
5002
|
iceServers: iceServers.iceServers || [],
|
|
@@ -5679,12 +5707,18 @@ class VegaRtcManager {
|
|
|
5679
5707
|
if (oldTrack && oldTrack.kind === "audio") {
|
|
5680
5708
|
this._stopMonitoringAudioTrack(oldTrack);
|
|
5681
5709
|
}
|
|
5710
|
+
if (oldTrack && oldTrack.kind === "video" && !track.replacement) {
|
|
5711
|
+
this._stopMonitoringVideoTrack(oldTrack);
|
|
5712
|
+
}
|
|
5682
5713
|
if (track.kind === "audio") {
|
|
5683
5714
|
this._startMonitoringAudioTrack(track);
|
|
5684
5715
|
this._micTrack = track;
|
|
5685
5716
|
this._replaceMicTrack();
|
|
5686
5717
|
}
|
|
5687
5718
|
if (track.kind === "video") {
|
|
5719
|
+
if (!track.replacement) {
|
|
5720
|
+
this._startMonitoringVideoTrack(track);
|
|
5721
|
+
}
|
|
5688
5722
|
this._webcamTrack = track;
|
|
5689
5723
|
this._replaceWebcamTrack();
|
|
5690
5724
|
}
|
|
@@ -5713,8 +5747,12 @@ class VegaRtcManager {
|
|
|
5713
5747
|
this._webcamPaused = videoPaused;
|
|
5714
5748
|
const videoTrack = stream.getVideoTracks()[0];
|
|
5715
5749
|
const audioTrack = stream.getAudioTracks()[0];
|
|
5716
|
-
if (videoTrack)
|
|
5750
|
+
if (videoTrack) {
|
|
5717
5751
|
this._sendWebcam(videoTrack);
|
|
5752
|
+
if (!videoTrack.replacement) {
|
|
5753
|
+
this._startMonitoringVideoTrack(videoTrack);
|
|
5754
|
+
}
|
|
5755
|
+
}
|
|
5718
5756
|
if (audioTrack) {
|
|
5719
5757
|
this._sendMic(audioTrack);
|
|
5720
5758
|
this._syncMicAnalyser();
|
|
@@ -5777,6 +5815,7 @@ class VegaRtcManager {
|
|
|
5777
5815
|
}
|
|
5778
5816
|
}
|
|
5779
5817
|
stopOrResumeVideo(localStream, enable) {
|
|
5818
|
+
var _a;
|
|
5780
5819
|
logger$1.info("stopOrResumeVideo() [enable:%s]", enable);
|
|
5781
5820
|
this._webcamPaused = !enable;
|
|
5782
5821
|
this._pauseResumeWebcam();
|
|
@@ -5785,6 +5824,7 @@ class VegaRtcManager {
|
|
|
5785
5824
|
}
|
|
5786
5825
|
if (!enable) {
|
|
5787
5826
|
clearTimeout(this._stopCameraTimeout);
|
|
5827
|
+
const stopCameraDelay = ((_a = localStream.getVideoTracks().find((t) => !t.enabled)) === null || _a === void 0 ? void 0 : _a.readyState) === "ended" ? 0 : 5000;
|
|
5788
5828
|
this._stopCameraTimeout = setTimeout(() => {
|
|
5789
5829
|
localStream.getVideoTracks().forEach((track) => {
|
|
5790
5830
|
if (track.enabled === false) {
|
|
@@ -5797,13 +5837,14 @@ class VegaRtcManager {
|
|
|
5797
5837
|
this._handleStopOrResumeVideo({ enable, track });
|
|
5798
5838
|
}
|
|
5799
5839
|
});
|
|
5800
|
-
},
|
|
5840
|
+
}, stopCameraDelay);
|
|
5801
5841
|
}
|
|
5802
5842
|
else if (localStream.getVideoTracks().length === 0) {
|
|
5803
5843
|
const constraints = this._webrtcProvider.getMediaConstraints().video;
|
|
5804
5844
|
navigator.mediaDevices.getUserMedia({ video: constraints }).then((stream) => {
|
|
5805
5845
|
const track = stream.getVideoTracks()[0];
|
|
5806
5846
|
localStream.addTrack(track);
|
|
5847
|
+
this._startMonitoringVideoTrack(track);
|
|
5807
5848
|
this._emitToPWA(EVENTS.LOCAL_STREAM_TRACK_ADDED, {
|
|
5808
5849
|
streamId: localStream.id,
|
|
5809
5850
|
tracks: [track],
|
|
@@ -5904,6 +5945,12 @@ class VegaRtcManager {
|
|
|
5904
5945
|
_stopMonitoringAudioTrack(track) {
|
|
5905
5946
|
track.removeEventListener("ended", this._audioTrackOnEnded);
|
|
5906
5947
|
}
|
|
5948
|
+
_startMonitoringVideoTrack(track) {
|
|
5949
|
+
track.addEventListener("ended", this._videoTrackOnEnded);
|
|
5950
|
+
}
|
|
5951
|
+
_stopMonitoringVideoTrack(track) {
|
|
5952
|
+
track.removeEventListener("ended", this._videoTrackOnEnded);
|
|
5953
|
+
}
|
|
5907
5954
|
_onMessage(message) {
|
|
5908
5955
|
return __awaiter(this, void 0, void 0, function* () {
|
|
5909
5956
|
const { method, data } = message;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@whereby.com/media",
|
|
3
3
|
"description": "Media library for Whereby",
|
|
4
|
-
"version": "1.6.
|
|
4
|
+
"version": "1.6.2",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/whereby/sdk",
|
|
7
7
|
"repository": {
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"check-ip": "^1.1.1",
|
|
52
52
|
"events": "^3.3.0",
|
|
53
53
|
"ip-address": "^9.0.5",
|
|
54
|
-
"mediasoup-client": "3.7.
|
|
54
|
+
"mediasoup-client": "3.7.12",
|
|
55
55
|
"rtcstats": "github:whereby/rtcstats#5.4.0",
|
|
56
56
|
"sdp": "^3.2.0",
|
|
57
57
|
"sdp-transform": "^2.14.2",
|