首页 > 其他分享 >electron 下网页获取 micphone 权限

electron 下网页获取 micphone 权限

时间:2024-02-19 16:23:31浏览次数:21  
标签:micphone 网页 win 获取 electron 权限

网页获取麦克风或摄像头权限我们只需调用 navigator.mediaDevices.getUserMedia 方法就可唤起浏览器用户授权

const useMicphone = async () => {
  try{
    let mediaStream = await navigator.mediaDevices.getUserMedia({ audio: true });
    if (mediaStream) {
      console.log('获取 micphone 成功')
    }
  }catch(e){  
    console.warn('获取 micphone 失败')
  }
};

但在 electron 内可能不起作用

我们用 electron 来包裹网页本意大多就是为了方便获取更多的操作权限

如果获取失败的话可尝试在 electron 内提前让用户权限可在 electron 提供的 api 内在用户打开软件时提前授权

在创建窗体后,加载网页前调用 systemPreferences.getMediaAccessStatus 授权:

import { app, systemPreferences } from "electron";

// 权限授权
async function checkMediaAccess(mediaType: 'microphone' | 'camera' | 'screen'){
  const result = systemPreferences.getMediaAccessStatus(mediaType)
  if(result !== "granted"){
    await systemPreferences.askForMediaAccess('microphone')
  }
}

// 创建主窗体
async function createMainWindow() {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true,
      preload: path.join(__dirname, "preload.js"),
      webSecurity: false,
    },
  });
  // 此处调用并授权
  await checkMediaAccess('microphone')

  if (isDev) {
    win.loadURL(VITE_DEV_SERVER_URL);
    win.webContents.openDevTools();
  } else {
    win.loadFile('dist/index.html')
  }
  return win;
}

如果获取 micphone 或者摄像头是在 electron 网页内再嵌入的 iframe 内则还需要在 iframe 上加上 allow 属性:

// 允许地理信息,麦克风,摄像头.. 等权限
<iframe allow="geolocation; microphone; camera; midi; encrypted-media;" src="http://helloworld.com" style="min-width: 100%; height: 100%; width: 100%;"></iframe>

注:转载请注明出处博客园:王二狗Sheldon池中物 ([email protected])

标签:micphone,网页,win,获取,electron,权限
From: https://www.cnblogs.com/willian/p/18021373

相关文章

  • 完美禁止微信网页下拉显示网页由某某提供
    简单理解就是:判断手指触摸移动走向-如果到顶之后-还在继续下拉,就阻止默认的touchmove事件【有用、无用请留言,谢谢】建议写在html页面中,第一时间生效。<script>      //禁用微信下拉      letlastTouchY=0;      wind......
  • 唯一客服系统:Golang开发客服系统源码,支持网页,H5,APP,微信小程序公众号等接入,商家有PC端
    本系统采用GolangGin框架+GORM+MySQL+Vue+ElementUI开发的独立高性能在线客服系统。客服系统访客端支持PC端、移动端、小程序、公众号中接入客服,利用超链接、网页内嵌、二维码、定制对接等方式让网上所有通道都可以快速通过本系统联系到商家。 服务端可编译为二进制程序包,无......
  • electron delphi winform wpf qt的对比
    Electron、Delphi、WinForms、WPF和Qt都是用于开发桌面应用程序的工具或框架,它们各自有一些独特的优点和适用场景。以下是对这些工具的简要对比:Electron:基于Web技术(HTML、CSS和JavaScript)的跨平台桌面应用程序开发框架。使用Chromium渲染引擎提供强大的页面渲染能力。适用......
  • (学习日记)一、Web框架-HTML标签-网页请求
    1.快速开发网站render_template是Flask框架的一个函数,用于渲染模板并生成动态的HTML文件app=Flask(name,template_floder(''路径''))构造一个Flask类赋给app,template_floder修改寻找模板的默认路径,默认是当前目录下的templates文件(没有则需要创建一个目录文件)fromflask......
  • 网页 三剑客
    网页三剑客,是一套强大的网页编辑工具,最初是由美国的Macromedia公司开发出来的。由Dreamweaver,Fireworks,Flash三个软件组成,俗称网页三剑客。Dreamweaver是一个“所见即所得”的可视化网站开发工具,主要用于动态网页和静态网页的开发;Fireworks主要是用于对网页上常用的jpg、gif的制......
  • 网页hook方法
    1.加密解密内容操作(function(){varparse_=JSON.parse;JSON.parse=function(arg){console.log("您猜怎么着?断住了!——>",arg);debugger;returnparse_(arg);//不改变原来的执行逻辑}})();2.异步加载的请求参数(function(){varopen=window.XMLHttpRe......
  • Linux Firefox 无法播放网页H5视频解决方案
    系统版本:Fedora38解决方案来自官方文档:https://docs.fedoraproject.org/en-US/quick-docs/openh264/#_firefox_config_changes安装openh264sudodnfconfig-manager--set-enabledfedora-cisco-openh264sudodnfinstall-ygstreamer1-plugin-openh264mozilla-openh264......
  • 网页中嵌入MediaPlayer时,各种属性与方法设置
    播放:MediaPlayer.Play()暂停:MediaPlayer.Pause()定位:MediaPlayer.SetCurrentEntry(lWhichEntry)MediaPlayer.Next()MediaPlayer.Previous()循环:MediaPlayer.PlayCount=00:theclipplaysrepeatedly1:once停止:MediaPlayer.Stop()===========================......
  • Python实例:爬取网页中的一列数据
    在进行数据分析和处理时,我们常常需要从网页中提取数据。本文将介绍如何使用Python进行网页爬虫,从网页中抓取特定列的数据。一、安装所需库首先,我们需要安装两个Python库:requests和BeautifulSoup。requests库用于发送HTTP请求,而BeautifulSoup库用于解析HTML文档。可以使用以下命令来......
  • 探索Web API SpeechSynthesis:给你的网页增添声音
    WebAPISpeechSynthesis是一项强大的浏览器功能,它允许开发者将文本转换为语音,并通过浏览器播放出来。本文将深入探讨SpeechSynthesis的控制接口,包括其功能、用法和一个完整的JavaScript示例。参考资料:SpeechSynthesis-WebAPI接口参考|MDN(mozilla.org)文本语音互......