webRTC значение удаленной видеодорожки отключено / включено

Реализовав пару лет назад механизм для сигнализации через сообщение канала данных о том, что удаленный пользователь отключил свое локальное видео (например, для параметра enable установлено значение false), а затем предпринял соответствующие действия на удаленной стороне (например, вместо этого показывал аватар удаленного пользователя) черного видеопотока), я проводил некоторое тестирование функции, не имеющей прямого отношения, которая заставила меня взглянуть на состояния видеодорожек (т. е. видеодорожек в потоке приема однорангового соединения), и я заметил, что Состояние приглушенного звука на удаленном видео иногда колеблется между истиной и ложью (хотя фактических изменений в самом удаленном потоке нет).

Трудно сказать, когда именно это происходит, но кажется, что это МОЖЕТ (не знаю, так ли это на самом деле) коррелирует с отсутствием прикрепления мультимедиа к объекту (например, элементу HTML-видео для воспроизведения) в течение длительного периода времени ( например, 10 секунд), и кажется, что если он подключен в течение короткого периода времени, видеодорожка не показывает состояние приглушенного = истина на принимающей стороне.

Спецификация W3 Media Capture и Streams (см. https://w3c.github.io/mediacapture-main/#track-muted) MediaStreamTrack отключается, когда источник временно не может предоставить дорожку с данными. Пользователь может отключить звук дорожки. Часто это действие находится вне контроля приложения. Это могло произойти в результате нажатия пользователем аппаратного переключателя или переключения элемента управления в операционной системе / браузере Chrome. Трек также может быть отключен пользовательским агентом. Спецификация, похоже, не рассматривает причины этого или возможные причины.

В случае webRTC, может ли кто-нибудь указать, почему удаленный видеопоток, на который ссылается одноранговое соединение webrtc, может показывать отключенное состояние true, когда мультимедиа с удаленного устройства фактически передается. Кроме того, какова может быть практическая ценность или использование состояния отключения звука в удаленном видеопотоке, когда оно фактически отражает не удаленное состояние, а некоторую локальную обработку.

Спасибо за любые мысли по этому поводу.


person SBG    schedule 12.08.2020    source источник


Ответы (1)


Как говорится в документации, отключенное состояние зависит от действий пользователя, сети или даже самого браузера. В случае, если он отключен во время передачи данных, это может быть из-за вашего браузера или браузера других пользователей (например, может быть много других причин, которые практически не имеют значения).

Вы спросите, для чего это? Многие из этих свойств используются только для целей тестирования (при глубоком изучении разработки webrtc) и не подходят для производства.

Как сказано в MDN:

По возможности избегайте отключения звука в опросе, чтобы отслеживать состояние отключения звука дорожки. Вместо этого добавьте прослушиватели для событий отключения и включения звука.

person Helder Esteves    schedule 13.08.2020
comment
Да, спасибо, Дополнительная информация в w3.org/TR/mediacapture -streams / # track-and-constraints Лучшая практика № 5. Отключение звука устройства, инициированное пользовательским агентом ... Лучшей практикой является отключение звука камеры или микрофона в следующих случаях: Событие уровня ОС, для которого Пользовательский агент уже приостанавливает воспроизведение мультимедиа глобально, но JavaScript не приостанавливается. Обоснование состоит в том, что в противном случае пользователи могут быть удивлены, если захват продолжится в этой ситуации (если только они не настроили это намеренно). .... - person SBG; 20.10.2020
comment
К сожалению, пропущен крайний срок редактирования - см. Также w3.org / TR / mediacapture-streams / # life-cycle-and-media-flow. Для отключения звука MediaStreamTrack может быть несколько причин: пользователь нажимает физическую кнопку отключения звука на микрофоне, пользователь закрывает ноутбук. крышка со встроенной камерой, пользователь переключает элемент управления в операционной системе, пользователь нажимает кнопку отключения звука в браузере Chrome, пользовательский агент (от имени пользователя) отключает звук и т. д. - person SBG; 20.10.2020