onRemoteStreamReceive method
void
onRemoteStreamReceive(
- int userId,
- MediaStream remoteMediaStream, {
- RTCRtpTransceiver? transceiver,
- MediaStreamTrack? track,
Implementation
@override
void onRemoteStreamReceive(int userId, MediaStream remoteMediaStream,
{RTCRtpTransceiver? transceiver, MediaStreamTrack? track}) {
log('[onRemoteStreamReceive] userId: $userId, trackId: ${track?.id}, trackMid: ${transceiver?.mid}',
_TAG);
if (track != null && transceiver != null) {
trackIdMid[track.id!] = transceiver.mid;
} else {
remoteMediaStream.getTracks().forEach((track) {
if (track.id?.startsWith(JANUS_PREFIX) ?? false) {
trackIdMid[track.id!] = track.id!.replaceAll(JANUS_PREFIX, '');
}
});
}
var feedId = _signaler.subStreams[
transceiver?.mid ?? track?.id?.replaceAll(JANUS_PREFIX, '')];
if (transceiver == null) {
onRemoteStreamTrackReceived?.call(this, feedId!, remoteMediaStream,
trackId: track?.id);
} else if (track != null) {
if (kIsWeb) {
createMediaStream(track.id!).then((mediaStream) {
mediaStream.addTrack(track);
remoteMediaStream.getTracks().forEach((remoteTrack) {
if (remoteTrack.id != track.id) {
var feedId2 = _signaler
.subStreams[remoteTrack.id?.replaceAll(JANUS_PREFIX, '')];
if (feedId == feedId2) {
mediaStream.addTrack(remoteTrack);
}
}
});
onRemoteStreamTrackReceived?.call(this, feedId!, mediaStream,
trackId: track.id);
});
} else {
if (track.kind == 'video') {
onRemoteStreamTrackReceived?.call(this, feedId!, remoteMediaStream,
trackId: track.id);
}
}
}
}