Это сделано специально для безопасности и конфиденциальности?
Да, это сделано для того, чтобы фоновые вкладки не включали камеру или микрофон, чтобы шпионить за пользователями. Потому что это жутко. Я считаю, что Safari работает так же.
Спецификация getUsermedia недавно сделала это требованием :
- Шаг 6.1. «Пользовательский агент ДОЛЖЕН подождать, чтобы перейти к следующему шагу, пока ответственный документ объекта текущих настроек не станет полностью активным и сфокусированным». *
Так что я ожидаю, что Chrome скоро последует этому примеру.
Есть ли способ решить мою проблему?
Это очень сильно подорвало бы уверенность.
Пользователи могут быть уверены, что только текущая вкладка может включить камеру или микрофон.
Если я открою новую вкладку (T1) и инициирую в ней webrtc и сделаю вызов webrtc из другой вкладки (T2), не посещая вкладку T1, вызов подключается в chrome, но не в Firefox, если я не посещаю T1.
Это проблема RTCPeerConnection , которая отличается от getUserMedia .
Обходной путь - не блокировать установление соединения на микрофонном доступе.
Нет причины, по которой вы не можете сначала подключиться, а потом добавить микрофон.
Или получите микрофон заранее и подключитесь позже. По сути, эти два действия не должны совпадать или блокировать друг друга.