我的目标是使用 Script Lab 开发一个 Outlook 插件,允许用户通过电子邮件录制视频。我目前的目标是让用户单击一个按钮,该按钮将打开他们的相机并显示其输出。在浏览器(即 Chrome)上访问摄像头时,我可以通过以下代码访问用户的系统摄像头:
索引.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>video app</title>
</head>
<body>
<!-- HTML DISPLAY CODE -->
<video id="video" src=""></video>
<button onclick="openCamera()">start recording</button>
<!-- JS LOGIC -->
<script src="index.js"></script>
</body>
</html>
index.js
function openCamera() {
const constraints = {
video: true,
audio: false
}
navigator.mediaDevices.getUserMedia(constraints)
.then(mediaStream => {
var video = document.querySelector("video");
video.srcObject = mediaStream;
video.onloadedmetadata = function(e) {
video.play();
};
})
.catch(error => {
console.log(error.name + ":" + error.message);
})
}
当将相同的脚本作为 Outlook 插件运行时(在 Script Lab 上以及运行本地 npm 开发服务器),对摄像头的请求会直接进入 catch 块,甚至无需提示用户许可。这是输出:
PermissionDeniedError: null
我的问题是:如何更改上述代码以通过 Outlook-Addin 启用相机功能