在我们的网络会议应用程序中,我们提供Flash客户端,通过它我们提供视频和音频通信。视频通过Red5 Media Server完成,音频通过WebRTC完成。
当您尝试在Flash中访问麦克风或相机时,它会提示Flash权限窗口批准对视频和相机的访问。但是在Chrome中,它还会提示Chrome麦克风和相机权限。一个问题是Chrome麦克风和相机权限不是很明显,用户通常会错过这个提示,然后抱怨视频无法正常工作。
我正在考虑的解决方案是通过WebRTC调用手动触发Chrome Permission提示,并显示指向要允许的位置的箭头。
但即使这样做,一旦涉及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
很抱歉,如果情况不是很清楚。如果需要,我可以提供更多信息。
答案 0 :(得分:2)
存储webrtc权限的唯一方法是通过TLS / SSL连接(HTTPS)。然后chrome可以存储允许或禁止的站点。这样,当他们访问您的网站一次并批准使用他们的媒体输入时,他们就不必再在该网站上批准他们的使用。
但是,由于Flash和WebRTC是两种不同的获取输入的方法,因此无法为其他人更改权限。