[mirotalk] - enable audio on screen sharing

This commit is contained in:
Miroslav Pejic
2022-09-12 09:33:43 +02:00
parent 20bb44d492
commit e7bc5332e9
+43 -10
View File
@@ -109,6 +109,8 @@ let isRoomLocked = false;
let isPresenter = false; // Who init the room (aka first peer joined)
let needToEnableMyAudio = false; // On screen sharing end, check if need to enable my audio
let myPeerId; // socket.id
let peerInfo = {}; // Some peer info
let userAgent; // User agent info
@@ -3600,6 +3602,7 @@ function stopLocalAudioTrack() {
async function toggleScreenSharing() {
screenMaxFrameRate = parseInt(screenFpsSelect.value);
const constraints = {
audio: true, // enable tab audio
video: { frameRate: { max: screenMaxFrameRate } },
}; // true | { frameRate: { max: screenMaxFrameRate } }
@@ -3717,17 +3720,33 @@ async function refreshMyStreamToPeers(stream, localAudioTrackChange = false) {
});
}
if (localAudioTrackChange) {
// https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/getSenders
let audioSender = peerConnections[peer_id]
.getSenders()
.find((s) => (s.track ? s.track.kind === 'audio' : false));
let myAudioTrack; // audio Track to replace to peers
if (audioSender) {
// https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender/replaceTrack
audioSender.replaceTrack(stream.getAudioTracks()[0]);
console.log('REPLACE AUDIO TRACK TO', { peer_id: peer_id, peer_name: peer_name });
}
if (stream.getAudioTracks()[0] && (localAudioTrackChange || isScreenStreaming)) {
myAudioTrack = stream.getAudioTracks()[0];
} else {
myAudioTrack = localMediaStream.getAudioTracks()[0];
}
// https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/getSenders
let audioSender = peerConnections[peer_id]
.getSenders()
.find((s) => (s.track ? s.track.kind === 'audio' : false));
if (audioSender) {
// https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender/replaceTrack
audioSender.replaceTrack(myAudioTrack);
console.log('REPLACE AUDIO TRACK TO', { peer_id: peer_id, peer_name: peer_name });
}
// When share a video tab that contain audio, my voice will be turned off
if (isScreenStreaming && stream.getAudioTracks()[0]) {
setMyAudioOff('you');
needToEnableMyAudio = true;
}
// On end screen sharing enable my audio if need
if (!isScreenStreaming && needToEnableMyAudio) {
setMyAudioOn('you');
needToEnableMyAudio = false;
}
}
}
@@ -5119,6 +5138,20 @@ function setMyAudioOff(peer_name) {
playSound('off');
}
/**
* Set my Audio on and Popup the peer name that performed this action
* @param {string} peer_name peer name
*/
function setMyAudioOn(peer_name) {
if (myAudioStatus === true || !useAudio) return;
localMediaStream.getAudioTracks()[0].enabled = true;
myAudioStatus = localMediaStream.getAudioTracks()[0].enabled;
audioBtn.className = 'fas fa-microphone';
setMyAudioStatus(myAudioStatus);
userLog('toast', peer_name + ' has enabled your audio');
playSound('on');
}
/**
* Set my Video off and Popup the peer name that performed this action
* @param {string} peer_name peer name