addRemoteTrack method

Future<RTCRtpTransceiver> addRemoteTrack(
  1. RTCRtpMediaType media,
  2. List<MediaStream> streams
)

Add remote receving track.

String] media - Media kind ('audio' | 'video'). List<MediaStream> streams - Streams the track will belong to. Return Future<RTCRtpTransceiver> Future that will be resolved when the RTCRtpTransceiver is assigned an mid value.

Note: For Android, when adding both Audio & Video tracks, you must add Audio tracks first. If you add Video Tracks first, your transceiver will get disposed.

@example

import 'package:flutter_webrtc/flutter_webrtc.dart';
import 'package:millicast_flutter_sdk/millicast_flutter_sdk.dart';

// ... initialize connection and renderers using view object
// ...
MediaStream stream = await createLocalMediaStream('myStream');
RTCRtpTransceiver transceiver1 = await view!
    .addRemoteTrack(RTCRtpMediaType.RTCRtpMediaTypeAudio, [stream]);
RTCRtpTransceiver transceiver = await view!
    .addRemoteTrack(RTCRtpMediaType.RTCRtpMediaTypeVideo, [stream]);
await view!.project('mySourceId', [
  {'trackId': 'audio', 'mediaId': transceiver1.mid}
]);
await view!.project('pip', [
  {'trackId': 'video', 'mediaId': transceiver.mid}
]);

stream.addTrack(transceiver1.receiver.track!);
stream.addTrack(transceiver.receiver.track!);
_localRenderer.srcObject = stream;
// ...

Implementation

Future<RTCRtpTransceiver> addRemoteTrack(
    RTCRtpMediaType media, List<MediaStream> streams) async {
  _logger.i('Viewer adding remote  track $media');
  RTCRtpTransceiver transceiverLocal =
      await webRTCPeer.addRemoteTrack(media, streams);
  return transceiverLocal;
}