首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何以编程方式请求媒体权限?

如何以编程方式请求媒体权限?
EN

Stack Overflow用户
提问于 2021-12-22 19:26:18
回答 1查看 1.2K关注 0票数 2

摄像机和麦克风在Chrome中被手动阻塞(如下图所示):

本地媒体轨道是使用createLocalAudioTrackcreateLocalVideoTrack创建的twilio视频库方法,这将引发下一个异常:

代码语言:javascript
运行
复制
DOMException: Permission denied
code: 0
message: "Permission denied"
name: "NotAllowedError"

当尝试使用浏览器本机getUserMedia时,如下所示:

代码语言:javascript
运行
复制
navigator.mediaDevices.getUserMedia({ audio: true, video: true })
  .catch(error => {
    console.log(error)
  })

它在catch块中记录相同的异常:

代码语言:javascript
运行
复制
DOMException: Permission denied

的问题:在创建本地媒体轨道之前,是否可能事先知道没有权限这样做(照相机和麦克风在浏览器中被手动阻塞),并以编程方式请求这样的权限(显示弹出请求权限)来创建轨道?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-22 19:54:23

注意,在我写作的时候,这仍然是实验领域

可以使用Permissions.query()查询权限。

代码语言:javascript
运行
复制
const permissionDescriptors = [
  {name: 'camera'},
  {name: 'microphone'},
];

const permissions = await Promise.all(permissionDescriptors.map(async descriptor => ({
  descriptor,
  status: await navigator.permissions.query(descriptor),
})));

for (const {descriptor, status} of permissions) {
  console.log(
    descriptor.name, // 'camera' | 'microphone'
    status.state, // 'granted' | 'denied' | 'prompt'
  );
}

您将能够使用Permissions.request()请求权限。但是,目前在任何浏览器中都不支持这一点。

今天,最好只访问MediaStream,捕捉并处理一个潜在的异常:

代码语言:javascript
运行
复制
let mediaStream;
try {
  const constraints = { audio: true, video: true };
  mediaStream = await navigator.mediaDevices.getUserMedia(constraints);
}
catch (ex) {
  if (ex instanceof DOMException) {
    if (ex.name === 'NotAllowedError') {
      // handle permission denied
    }
    else if (ex.name === 'NotFoundError') {
      // handle media not found
    }
    else {
      // handle unexpected DOMException
    }
  }
  else {
    // handle unexpected error
  }
}

if (!mediaStream) {
  // handle no stream
}
else {
  // do something with stream
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70454181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档