Javascript 如果Chrome摄像头已经通过WebRTC电话批准,则不要请求Chrome摄像头许可
在我们的web会议应用程序中,我们有一个Flash客户端,通过它我们可以提供视频和音频通信。视频通过Red5媒体服务器完成,音频通过WebRTC完成 当您试图在Flash中访问麦克风或摄像头时,它将提示Flash权限窗口以批准对视频和摄像头的访问。然而,在Chrome中,它也会提示输入Chrome麦克风和摄像头许可。问题是Chrome的麦克风和摄像头权限不是很明显,用户通常会错过这个提示,然后抱怨视频无法正常工作 我正在考虑的解决方案是通过WebRTC调用手动触发Chrome权限提示,并显示箭头,该箭头将指向按下以允许的位置 但即使这样做了,一旦进入Flash,并且用户批准Flash权限窗口,Chrome麦克风和摄像头权限提示将再次弹出。所以Chrome似乎记不起已经授予了权限 问题是:有没有办法让Chrome知道许可已经存在,并且没有必要再问 这是通过SIP.js在Chrome中请求摄像头权限的功能:Javascript 如果Chrome摄像头已经通过WebRTC电话批准,则不要请求Chrome摄像头许可,javascript,flash,google-chrome,permissions,webrtc,Javascript,Flash,Google Chrome,Permissions,Webrtc,在我们的web会议应用程序中,我们有一个Flash客户端,通过它我们可以提供视频和音频通信。视频通过Red5媒体服务器完成,音频通过WebRTC完成 当您试图在Flash中访问麦克风或摄像头时,它将提示Flash权限窗口以批准对视频和摄像头的访问。然而,在Chrome中,它也会提示输入Chrome麦克风和摄像头许可。问题是Chrome的麦克风和摄像头权限不是很明显,用户通常会错过这个提示,然后抱怨视频无法正常工作 我正在考虑的解决方案是通过WebRTC调用手动触发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);
}
};
这就是我在闪光灯中访问相机的方式:
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是获取输入的两种不同方式,因此一方的权限无法更改另一方的权限