[mirotalk] - enable audio on screen sharing
This commit is contained in:
+43
-10
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user