Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果Chrome摄像头已经通过WebRTC电话批准,则不要请求Chrome摄像头许可_Javascript_Flash_Google Chrome_Permissions_Webrtc - Fatal编程技术网

Javascript 如果Chrome摄像头已经通过WebRTC电话批准,则不要请求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权限提示,并显示箭头

在我们的web会议应用程序中,我们有一个Flash客户端,通过它我们可以提供视频和音频通信。视频通过Red5媒体服务器完成,音频通过WebRTC完成

当您试图在Flash中访问麦克风或摄像头时,它将提示Flash权限窗口以批准对视频和摄像头的访问。然而,在Chrome中,它也会提示输入Chrome麦克风和摄像头许可。问题是Chrome的麦克风和摄像头权限不是很明显,用户通常会错过这个提示,然后抱怨视频无法正常工作

我正在考虑的解决方案是通过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);
}
};
这就是我在闪光灯中访问相机的方式:

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是获取输入的两种不同方式,因此一方的权限无法更改另一方的权限