gpt4 book ai didi

javascript - 如果已通过 WebRTC 调用获得批准,则不要请求 Chrome Camera 权限

转载 作者:行者123 更新时间:2023-11-30 17:17:32 25 4
gpt4 key购买 nike

在我们的网络 session 应用程序中,我们有 Flash 客户端,我们通过它提供视频和音频通信。视频通过 Red5 媒体服务器完成,音频通过 WebRTC 完成。

当您尝试访问 Flash 中的麦克风或摄像头时,它会提示 Flash 权限窗口以批准对视频和摄像头的访问。但是在 Chrome 中,它还会提示 Chrome Mic 和 Camera Permission。一个问题是 Chrome Mic 和 Camera Permission 不是很明显,用户通常会错过这个提示,然后提示视频不工作。

我正在考虑的解决方案是通过 WebRTC 调用手动触发 Chrome 权限提示,并显示指向允许按下位置的箭头。

但即便如此,一旦涉及到 Flash 并且用户批准了 Flash 权限窗口,Chrome 麦克风和相机权限提示将再次弹出。因此,Chrome 似乎无法记住已经授予了权限。

问题是:有没有办法让 Chrome 知道权限已经存在,无需再次询问。

这是通过 SIP.js 在 Chrome 中请求相机权限的功能:

function getUserWebcamMedia(getUserWebcamMediaSuccess, getUserWebcamMediaFailure) {
if (userWebcamMedia == undefined) {
if (SIP.WebRTC.isSupported()) {
SIP.WebRTC.getUserMedia({audio:false, video:true}, getUserWebcamMediaSuccess, getUserWebcamMediaFailure); // Chrome permission prompt pops up on this call
} else {
console.log("getUserWebcamMedia: webrtc not supported");
getUserWebcamMediaFailure("WebRTC is not supported");
}
} else {
console.log("getUserWebcamMedia: webcam already set");
getUserWebcamMediaSuccess(userWebcamMedia);
}
};

这就是我在 Flash 中访问相机的方式:

var _camera:Camera = null;
_camera = Camera.getCamera();
...
_video = new Video();
_video.attachCamera(_camera); // Flash prompt pops up on this call

如果情况不是很清楚,请见谅。如果需要,我可以提供更多信息。

最佳答案

存储 webrtc 权限的唯一方法是通过 TLS/SSL 连接 (HTTPS)。然后 chrome 可以存储哪些网站被允许或不允许。这样,当他们访问您的网站一次并批准使用他们的媒体输入时,他们就不必再次批准他们在该网站上的使用。

但是,由于 Flash 和 WebRTC 是获取输入的两种不同方式,因此无法通过一种方式更改另一种方式的权限。

关于javascript - 如果已通过 WebRTC 调用获得批准,则不要请求 Chrome Camera 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25817150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com