publishStream method

Future<void> publishStream(
  1. bool video,
  2. bool audio
)

Implementation

Future<void> publishStream(bool video, bool audio) async {
  if (stream == null) return;
  final connection = await peerConnection;
  enableVideo(video);
  enableAudio(audio);

  switch (sdpSemantics) {
    case "plan-b":
      connection.addStream(stream!);
      break;
    case "unified-plan":
      stream?.getTracks().forEach((track) {
        connection.addTrack(track, stream!);
      });
      break;
    default:
  }

  final offer = await connection.createOffer(constraints);
  connection.setLocalDescription(offer);

  final result = await rpc.send(
    "publishVideo",
    params: {
      'audioOnly': audioOnly,
      'hasAudio': hasAudio,
      'doLoopback': doLoopback,
      'hasVideo': hasVideo,
      'audioActive': audioActive,
      'videoActive': videoActive,
      'typeOfVideo': typeOfVideo,
      'frameRate': frameRate,
      'videoDimensions': json.encode({"width": width, "height": height}),
      'sdpOffer': offer.sdp
    },
    hasResult: true,
  );

  streamId = result["id"];
  final answer = RTCSessionDescription(result['sdpAnswer'], 'answer');
  await connection.setRemoteDescription(answer);
}