Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2023, 19:40   #1
LUN2
Пользователь
 
Регистрация: 14.08.2021
Сообщений: 18
По умолчанию Почему в соединении webRtc в браузере Edge/Chrome генерируется событие "mute", а в FF его нет

Добрый вечер!

У меня реализовано webRtc-соединение между компами peer1 (начинает соединение) и peer2.

Peer1 - Firefox v.112.
Если peer2 = Firefox, описанной далее проблемы не возникает.
Если peer2 = Ms Edge v.118 или Chrome v.117, то есть 2 варианта развития событий:

Вариант1
При отсутствии точки останова в строке (*) - см. код далее, то на peer2 возникают события:
unmute (audio),
unmute (video) -- пока все нормально,
mute (video) !!! -- а вот после этого плейер перестает проигрывать.

Непонятно, почему здесь возникает "mute" - моя программа не делает ничего для этого, и, как я сказал ранее, в паре браузеров FF-FF оно не возникает!

Вариант2
Если я ставлю точку останова в отладчике в строке (*) , то peer2 получает 2 unmute и не получает "mute" - плейер играет нормально.

Такое впечатление, что из-за точки останова возникает задержка, кто-то что-то успевает за ее время сделать и "mute" не генерируется!

Вопрос: в чем может заключаться причина генерирования события "mute" и как его избежать без отладчика ?


Код:

Код:
navigator.mediaDevices.getUserMedia(constraints).then(
        function Resolve_GetUserMedia(stream) {
            // add track to peerConnection to send it to peer
 
            let streamToAdd = mediaControl.stream;
 
            let tracksArray = streamToAdd.getTracks();
 
            let msgText = "(1) Adding tracks of the stream _" + streamToAdd.id + "_  " +
            "Activity = " + streamToAdd.active + "  Total = " + tracksArray.length;
            appendMessageText(msgText, "msg_log");
 
            for (let i = 0; i < tracksArray.length; i++) {
                let track = tracksArray[i];
 
                // try to add track
                let ok_add_1track = false;
                try {
                    //  "par_webRtc.peerConnection" is a peerConnection
                    par_webRtc.peerConnection.addTrack(track, streamToAdd);
                    ok_add_1track = true;
                }
                catch(err) {
                    if (err.code === DOMException.INVALID_ACCESS_ERR) {
                        // track already sent - no error
                        ok_add_1track = true;                   // (*) ТОЧКА ОСТАНОВА ЗДЕСЬ РЕШАЕТ ПРОБЛЕМУ
                    }
                    else {
                        // other code are "true" errors
                        errorsCount++;
                    }
                }
 
                if (ok_add_1track) {
                    // track added successfully
                    console.log("OK_Status of adding <" + track.kind + "> = " + "OK");
                }
                else {
                    console.warn("ERR_Status of adding <" + track.kind + "> = " + "ERROR");
                }
 
                if (track.kind === "audio") {
                    // remember status of track adding
                    connection.noAudio = !ok_add_1track;
                }
                else if (track.kind === "video") {
                    // remember status of track adding
                    connection.noVideo = !ok_add_1track;
                }
 
                let sig_state = (par_webRtc.peerConnection === undefined) ?
                                    "NO PEER CONN!!!" :
                                    par_webRtc.peerConnection.signalingState;
 
                let msgText = "Resolve_RemoteDescriptionSet !!!>> " +
                "We sent track to remote.peerConnection : kind=" + track.kind +
                "  label=" + track.label +
                "  muted=" + track.muted.toString() +
                "  id=" + track.id +
                "  State = " + sig_state;
 
                console.log("WebRTC - " + msgText);
 
                appendMessageText(msgText, "msg_log");
            }
 
 
        } // function Resolve_GetUserMedia(stream)
LUN2 вне форума Ответить с цитированием
Старый 21.10.2023, 15:49   #2
LUN2
Пользователь
 
Регистрация: 14.08.2021
Сообщений: 18
По умолчанию

Добрый день!
Просмотров много, ответов - ноль
Это редкая тема или никто не сталкивался с таким поведением Edge/Chrome ?
Может подскажете, где более активно обсуждаются проблемы webRTC ?
LUN2 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[РЕШЕНО] После загрузки страницы в браузере (Chrome) они "подвисают" на некоторое время (поэтому работать дискомфортно) Вадим Мошев Свободное общение 3 15.12.2018 12:15
"float: right" в браузерах Microsoft Edge и Internet Explorer отображается не правильно Bulat Ibrahim HTML и CSS 3 04.03.2017 01:02
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 14:23
Как "повесить " передачу данных из формы на событие нажатия кнопки типа "button" ? vedro-compota JavaScript, Ajax 10 14.12.2010 21:05
Почему "xml" документ отображается в браузере Rusl92 PHP 10 06.08.2010 21:33