publishStream method
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);
}