First of all, thank for the fast answer you are phenomenal administrator one of the best i've seen. (i spend some time in the forum try to figure it out, that why i know.)
i apologize for the late response, my client wanted to make the update himself so i add to wait until it was done.
The solution works, i was able to hear sound on the Firefox end, but it revealed to me another problem.
I have two types of user in the conference call, one operator and all the other are users.
The operator have constraints of audio:true and video:true
and they are activated manually and separatly. With Firefox the microphone wont work until i activated the cameras, even if i initially give it the constraint audio:true and video false. if the operator activates it cameras i stop the stream and restart the process with constraint audio: true and video: true.
For the users the sound never work probably because it does not have any way of activate the cameras because they are not supposed to.
In both situation i have the same error in the console
error message (' Uncaught (in promise) DOMException: No transceiver for bundled mid 1 ')
from what i've seen is this post:
Hi Max, We have found an issue and tested that on demo.flashphoner.com. We streaming our service using chrome using the following constraints. {audio:true, video:false} We have been contacted by some users who use Firefox to listen to our feed. They have complained that they can't hear any...
forum.flashphoner.com
Firefox would need to receive constraint when it create the stream so here the code of when i'm doing it
Code:
function publishLocalMedia(room, constraints = { audio: true, video: false}) {
info_room = room
var display = document.getElementById("localDisplay");
if_operateur = document.getElementById('loginID').innerHTML
if(if_operateur == 'operateur'){
var display = document.getElementById("localDisplayOperateur");
display.style.width = "60%"
$("#localVideoToggle").removeClass("fa-video");
$("#localVideoToggle").addClass("fa-video-slash");
$("#localVideo").addClass("muted");
if(theLanguage == "fr"){
$("#localVideoToggleText").text("Activer");
}else{
$("#localVideoToggleText").text("Activate");
}
op_cameras_state(0)
console.log('operateur constraint')
}else{
var constraints = {
audio: true,
video: false,
};
}
if(firstTime != true){
room.publish({
display: display,
constraints: constraints,
record: false,
receiveVideo: true,
receiveAudio: false
}).on(STREAM_STATUS.FAILED, function (stream) {
self_stream = stream
console.warn("Local stream failed!");
setStatus("#localStatus", stream.status());
onMediaStopped(room);
}).on(STREAM_STATUS.PUBLISHING, function (stream) {
self_stream = stream
setStatus("#localStatus", stream.status());
onMediaPublished(stream,room);
}).on(STREAM_STATUS.UNPUBLISHED, function(stream) {
self_stream = stream
setStatus("#localStatus", stream.status());
onMediaStopped(room);
});
}else{
onMediaPublished(self_stream)
}
}
i believe that, since it when i receive the stream of other, the constraint should be call here
Code:
function playParticipantsStream(participant) {
if (participant.getStreams().length > 0) {
$("[id$=Name]").each(function (index, value) {
if ($(value).text() == participant.name()) {
var p = value.id.replace('Name', '');
var pDisplay = p + 'Display';
if(participant.name() == 'operateur')
pDisplay = 'localDisplayOperateur'
participant.getStreams()[0].play(document.getElementById(pDisplay)).on(STREAM_STATUS.PLAYING, function (playingStream) {
document.getElementById(playingStream.id()).addEventListener('resize', function (event) {resizeVideo(event.target);});
});
}
});
}
}
if i'm right where should i put the constraint?
overall, operator does not have sound until the cameras on even if the initial constraint is video: false
and users does not have sound probably because they don't have the possibility of activate the cameras.
all the other browser seems to get it, but not Firefox.
Thanks again