Mutes local video when shared video is playing and mutes shared video if user wants to talk.
This commit is contained in:
parent
9a984b7f84
commit
bede8feccc
|
@ -73,6 +73,10 @@ export default class SharedVideoManager {
|
||||||
// the owner of the video
|
// the owner of the video
|
||||||
this.from = id;
|
this.from = id;
|
||||||
|
|
||||||
|
//listen for local audio mute events
|
||||||
|
this.localAudioMutedListener = this.localAudioMuted.bind(this);
|
||||||
|
this.emitter.on(UIEvents.AUDIO_MUTED, this.localAudioMutedListener);
|
||||||
|
|
||||||
// This code loads the IFrame Player API code asynchronously.
|
// This code loads the IFrame Player API code asynchronously.
|
||||||
var tag = document.createElement('script');
|
var tag = document.createElement('script');
|
||||||
|
|
||||||
|
@ -110,7 +114,8 @@ export default class SharedVideoManager {
|
||||||
'onStateChange': onPlayerStateChange,
|
'onStateChange': onPlayerStateChange,
|
||||||
'onError': onPlayerError
|
'onError': onPlayerError
|
||||||
}
|
}
|
||||||
});
|
}).addEventListener(// add listener for volume changes
|
||||||
|
"onVolumeChange", "onVolumeChange");
|
||||||
};
|
};
|
||||||
|
|
||||||
window.onPlayerStateChange = function(event) {
|
window.onPlayerStateChange = function(event) {
|
||||||
|
@ -119,10 +124,6 @@ export default class SharedVideoManager {
|
||||||
|
|
||||||
self.player = event.target;
|
self.player = event.target;
|
||||||
|
|
||||||
// add listener for volume changes
|
|
||||||
self.player.addEventListener(
|
|
||||||
"onVolumeChange", "onVolumeChange");
|
|
||||||
|
|
||||||
if(self.initialAttributes)
|
if(self.initialAttributes)
|
||||||
{
|
{
|
||||||
self.processAttributes(
|
self.processAttributes(
|
||||||
|
@ -142,10 +143,14 @@ export default class SharedVideoManager {
|
||||||
* @param event
|
* @param event
|
||||||
*/
|
*/
|
||||||
window.onVolumeChange = function (event) {
|
window.onVolumeChange = function (event) {
|
||||||
if(!self.player)
|
|
||||||
return;
|
|
||||||
|
|
||||||
self.updateCheck();
|
self.updateCheck();
|
||||||
|
|
||||||
|
// let's check, if player is not muted lets mute locally
|
||||||
|
if(event.data.volume > 0 && !event.data.muted
|
||||||
|
&& !APP.conference.isLocalAudioMuted()){
|
||||||
|
self.emitter.emit(UIEvents.AUDIO_MUTED, true);
|
||||||
|
self.notifyUserComfortableMicMute(true);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
window.onPlayerReady = function(event) {
|
window.onPlayerReady = function(event) {
|
||||||
|
@ -199,9 +204,11 @@ export default class SharedVideoManager {
|
||||||
|
|
||||||
// lets check the volume
|
// lets check the volume
|
||||||
if (attributes.volume !== undefined &&
|
if (attributes.volume !== undefined &&
|
||||||
player.getVolume() != attributes.volume) {
|
player.getVolume() != attributes.volume
|
||||||
|
&& APP.conference.isLocalAudioMuted()) {
|
||||||
player.setVolume(attributes.volume);
|
player.setVolume(attributes.volume);
|
||||||
console.info("Player change of volume:" + attributes.volume);
|
console.info("Player change of volume:" + attributes.volume);
|
||||||
|
this.notifyUserComfortableVideoMute(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(playerPaused)
|
if(playerPaused)
|
||||||
|
@ -323,6 +330,10 @@ export default class SharedVideoManager {
|
||||||
this.intervalId = null;
|
this.intervalId = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.emitter.removeListener(UIEvents.AUDIO_MUTED,
|
||||||
|
this.localAudioMutedListener);
|
||||||
|
this.localAudioMutedListener = null;
|
||||||
|
|
||||||
VideoLayout.removeParticipantContainer(this.url);
|
VideoLayout.removeParticipantContainer(this.url);
|
||||||
|
|
||||||
VideoLayout.showLargeVideoContainer(SHARED_VIDEO_CONTAINER_TYPE, false)
|
VideoLayout.showLargeVideoContainer(SHARED_VIDEO_CONTAINER_TYPE, false)
|
||||||
|
@ -333,7 +344,7 @@ export default class SharedVideoManager {
|
||||||
if(this.player) {
|
if(this.player) {
|
||||||
this.player.destroy();
|
this.player.destroy();
|
||||||
this.player = null;
|
this.player = null;
|
||||||
}//
|
} // if there is an error in player, remove that instance
|
||||||
else if (this.errorInPlayer) {
|
else if (this.errorInPlayer) {
|
||||||
this.errorInPlayer.destroy();
|
this.errorInPlayer.destroy();
|
||||||
this.errorInPlayer = null;
|
this.errorInPlayer = null;
|
||||||
|
@ -344,6 +355,52 @@ export default class SharedVideoManager {
|
||||||
this.isSharedVideoShown = false;
|
this.isSharedVideoShown = false;
|
||||||
this.initialAttributes = null;
|
this.initialAttributes = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Receives events for local audio mute/unmute by local user.
|
||||||
|
* @param muted boolena whether it is muted or not.
|
||||||
|
*/
|
||||||
|
localAudioMuted (muted) {
|
||||||
|
if(!this.player)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(muted)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// if we are un-muting and player is not muted, lets muted
|
||||||
|
// to not pollute the conference
|
||||||
|
if(this.player.getVolume() > 0 || !this.player.isMuted()){
|
||||||
|
this.player.setVolume(0);
|
||||||
|
this.notifyUserComfortableVideoMute(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notifies user for muting its audio due to video is unmuted.
|
||||||
|
* @param show boolean, show or hide the notification
|
||||||
|
*/
|
||||||
|
notifyUserComfortableMicMute (show) {
|
||||||
|
if(show) {
|
||||||
|
this.notifyUserComfortableVideoMute(false);
|
||||||
|
console.log("Your audio was muted to enjoy the video");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
console.log("Hide notification local audio muted");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notifies user for muting the video due to audio is unmuted.
|
||||||
|
* @param show boolean, show or hide the notification
|
||||||
|
*/
|
||||||
|
notifyUserComfortableVideoMute (show) {
|
||||||
|
if(show) {
|
||||||
|
this.notifyUserComfortableMicMute(false);
|
||||||
|
console.log(
|
||||||
|
"Your shared video was muted in order to speak freely!");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
console.log("Hide notification share video muted");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue