navigator.getUserMedia 函数未定义
navigator.getUserMedia function is undefined
Navigator.getUserMedia()
navigator.getUserMedia函数是否可以因为未授予摄像头或麦克风访问权限而未定义?
This is a legacy method. Please use the newer
navigator.mediaDevices.getUserMedia() instead.
例如:
async function getMedia(constraints) {
let stream = null;
try {
stream = await navigator.mediaDevices.getUserMedia(constraints);
console.log('1')
/* use the stream */
} catch (err) {
/* handle the error */
}
}
getMedia({audio: true, video: true})
来源:MediaDevices 文档。
首先, 确保使用 navigator.mediaDevices.getUserMedia()
而不是 navigator.getUserMedia()
。后者已弃用。
其次, 在 Chrome 上抓取 navigator.mediaDevices.getUserMedia()
需要 安全上下文 。
如果服务器是基于 js 的,那么您需要使用 https 来访问主页(例如 index.html ) 而不是 http。
https 连接需要 creating/using 凭据(即证书和私钥)。为了演示,给出以下代码:
// change key and cert if you have other ones you use with a different name
var fs = require('fs');
var https = require('https');
var privateKey = fs.readFileSync('webrtcwwsocket-key.pem', 'utf8');
var certificate = fs.readFileSync('webrtcwwsocket-cert.pem', 'utf8');
var credentials = {key: privateKey, cert: certificate};
const express = require('express')
const app = express()
const httpsServer = https.createServer(credentials, app)
如果您使用的是基于python的服务器,那么您需要按如下方式创建ssl上下文:
ssl_context = ssl.SSLContext()
ssl_context.load_cert_chain(cert_file_path, key_file_path)
Navigator.getUserMedia()
navigator.getUserMedia函数是否可以因为未授予摄像头或麦克风访问权限而未定义?
This is a legacy method. Please use the newer navigator.mediaDevices.getUserMedia() instead.
例如:
async function getMedia(constraints) {
let stream = null;
try {
stream = await navigator.mediaDevices.getUserMedia(constraints);
console.log('1')
/* use the stream */
} catch (err) {
/* handle the error */
}
}
getMedia({audio: true, video: true})
来源:MediaDevices 文档。
首先, 确保使用 navigator.mediaDevices.getUserMedia()
而不是 navigator.getUserMedia()
。后者已弃用。
其次, 在 Chrome 上抓取 navigator.mediaDevices.getUserMedia()
需要 安全上下文 。
如果服务器是基于 js 的,那么您需要使用 https 来访问主页(例如 index.html ) 而不是 http。
https 连接需要 creating/using 凭据(即证书和私钥)。为了演示,给出以下代码:
// change key and cert if you have other ones you use with a different name
var fs = require('fs');
var https = require('https');
var privateKey = fs.readFileSync('webrtcwwsocket-key.pem', 'utf8');
var certificate = fs.readFileSync('webrtcwwsocket-cert.pem', 'utf8');
var credentials = {key: privateKey, cert: certificate};
const express = require('express')
const app = express()
const httpsServer = https.createServer(credentials, app)
如果您使用的是基于python的服务器,那么您需要按如下方式创建ssl上下文:
ssl_context = ssl.SSLContext()
ssl_context.load_cert_chain(cert_file_path, key_file_path)