首页 文章

如果已通过WebRTC电话批准,则不要求Chrome相机的许可

提问于
浏览
1

在我们的网络 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 回答

  • 2

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

    但是,由于Flash和WebRTC是获取输入的两种不同方式,因此无法为其他人更改权限 .

相关问题