問題引入:
navigator.mediaDevices undefined
場景:最近項目需求視頻連線,音頻對講
問題:navigator.mediaDevices調用返回為undefined
原因:
通過 MediaDevices.getUserMedia() 獲取用戶多媒體權限時,需要注意其只工作於以下三種環境:
- localhost 域
- 開啟了 HTTPS 的域
- 使用 file:/// 協議打開的本地文件
如果當前文檔未安全加載,navigator.mediaDevices 將為 undefined,並且不能使用getUserMedia()。
解決方案:
- 創建HTTPS服務器,用HTTPS協議的方式發送請求。
- 在HTTP服務器上,可設置Chrome 的相應參數:
a. 在chrome瀏覽器的地址欄中輸入: chrome://flags/#unsafely-treat-insecure-origin-as-secure,將該 flag 切換成 enable 狀態;
b. 在輸入框中填寫需要開啟的域名或地址,如果有多個,則以逗號分隔;
c. 重啟瀏覽器后生效。
第二種方式只適合自己測試,本機瀏覽器使用。
