在我们的网络 Session 应用程序中,我们有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);
}
};
这就是我在Flash中访问相机的方式:
var _camera:Camera = null;
_camera = Camera.getCamera();
...
_video = new Video();
_video.attachCamera(_camera); // Flash prompt pops up on this call
对不起,如果情况不是很清楚 . 如果需要,我可以提供更多信息 .
1 回答
存储webrtc权限的唯一方法是通过TLS / SSL连接(HTTPS) . 然后chrome可以存储允许或禁止的站点 . 这样,当他们访问您的网站并批准使用他们的媒体输入时,他们就不必再在该网站上批准他们的使用 .
但是,由于Flash和WebRTC是获取输入的两种不同方式,因此无法为其他人更改权限 .