updateTrack method
Future<void>
updateTrack(
{ - required MediaStreamTrack next,
- MediaStreamTrack? prev,
})
Implementation
Future<void> updateTrack(
{required MediaStreamTrack next, MediaStreamTrack? prev}) async {
await _stream.addTrack(next);
// If published, replace published track with track from new device
if (prev != null && prev.enabled) {
await _stream.removeTrack(prev);
await prev.stop();
if (_pc != null) {
await _pc!
.getSenders()
.then((senders) => senders.forEach((RTCRtpSender sender) {
if (sender.track?.kind == next.kind) {
sender.track?.stop();
sender.replaceTrack(next);
}
}));
}
} else {
await _stream.addTrack(next);
if (_pc != null) {
publishTrack(track: next);
}
}
}