desktop: using system sound in screenshare (#4035)

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
This commit is contained in:
Stanislav Dmitrenko 2024-04-19 23:37:47 +07:00 committed by GitHub
parent f6ceb89c4b
commit 925cb39397
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 34 additions and 5 deletions

View file

@ -486,8 +486,22 @@ const processCommand = (function () {
}
return;
}
for (const t of call.localStream.getTracks())
t.stop();
if (!call.screenShareEnabled) {
for (const t of call.localStream.getTracks())
t.stop();
}
else {
// Don't stop audio track if switching to screenshare
for (const t of call.localStream.getVideoTracks())
t.stop();
// Replace new track from screenshare with old track from recording device
for (const t of localStream.getAudioTracks()) {
t.stop();
localStream.removeTrack(t);
}
for (const t of call.localStream.getAudioTracks())
localStream.addTrack(t);
}
call.localCamera = camera;
const audioTracks = localStream.getAudioTracks();
const videoTracks = localStream.getVideoTracks();
@ -547,7 +561,9 @@ const processCommand = (function () {
//},
//aspectRatio: 1.33,
},
audio: true,
audio: false,
// This works with Chrome, Edge, Opera, but not with Firefox and Safari
// systemAudio: "include"
};
return navigator.mediaDevices.getDisplayMedia(constraints);
}

View file

@ -689,7 +689,18 @@ const processCommand = (function () {
}
return
}
for (const t of call.localStream.getTracks()) t.stop()
if (!call.screenShareEnabled) {
for (const t of call.localStream.getTracks()) t.stop()
} else {
// Don't stop audio track if switching to screenshare
for (const t of call.localStream.getVideoTracks()) t.stop()
// Replace new track from screenshare with old track from recording device
for (const t of localStream.getAudioTracks()) {
t.stop()
localStream.removeTrack(t)
}
for (const t of call.localStream.getAudioTracks()) localStream.addTrack(t)
}
call.localCamera = camera
const audioTracks = localStream.getAudioTracks()
@ -755,7 +766,9 @@ const processCommand = (function () {
//},
//aspectRatio: 1.33,
},
audio: true,
audio: false,
// This works with Chrome, Edge, Opera, but not with Firefox and Safari
// systemAudio: "include"
}
return navigator.mediaDevices.getDisplayMedia(constraints)
}