Only the members listed here are supported; other members are internal and can change between releases.
interface RtcMediaConnector {
readonly localStream: MediaStream; // what this participant sends
readonly relayStreams$: Observable<Map<string, MediaStream>>; // other participants, by peer ID
}Audio is already played by Weei. When you show a stream in a <video> element, mute the element so the sound is not doubled.
Example: a video grid
function videoGrid(app, root, destroy$) {
const { rxjs, connectors } = weei.sdk;
app.rtcService.getOrCreateConnector(connectors.RtcMediaConnector).pipe(
rxjs.first(),
rxjs.switchMap(media => media.relayStreams$),
rxjs.takeUntil(destroy$)
).subscribe(streams => {
root.replaceChildren(...[...streams].map(([peerId, stream]) => {
const video = document.createElement('video');
video.srcObject = stream;
video.muted = true;
video.autoplay = true;
video.playsInline = true;
video.dataset.peerId = peerId;
return video;
}));
});
}