获取麦克风权限
创作时间:
作者:
@小白创作中心
获取麦克风权限
引用
1
来源
1.
https://developer.mozilla.org/zh-CN/docs/Web/API/WebRTC_API/Build_a_phone_with_peerjs/Connect_peers/Get_microphone_permission
在创建对等方后,你将希望获得浏览器访问麦克风的权限。我们将使用 navigator.mediaDevices
对象的 getUserMedia()
方法。
getUserMedia()
端点接受一个 constraints
对象,该对象指定所需的权限。getUserMedia()
是一个 promise,当成功兑现时,会返回一个包含来自我们流的音频的 MediaStream
对象。如果 promise 没有成功兑现,你将需要捕获并显示错误。
在你的 script.js
文件底部添加以下代码:
function getLocalStream() {
navigator.mediaDevices
.getUserMedia({ video: false, audio: true })
.then((stream) => {
window.localStream = stream; // A
window.localAudio.srcObject = stream; // B
window.localAudio.autoplay = true; // C
})
.catch((err) => {
console.error(`you got an error: ${err}`);
});
}
让我们解释一下最重要的几行:
window.localStream = stream
将MediaStream
对象(我们在上一行赋值给stream
的对象)附加到窗口的localStream
。window.localAudio.srcObject = stream
将 ID 为localAudio
的<audio>
元素的src
属性设置为由 promise 返回的MediaStream
,以便它会播放我们的流。window.localAudio.autoplay = true
将<audio>
元素的autoplay
属性设置为 true,以便音频自动播放。
警告:如果你在网上进行了一些调查,可能会发现 navigator.getUserMedia
并认为你可以使用它而不是 navigator.mediaDevices.getUserMedia
。你是错误的。前者是一个已弃用的方法,它需要回调以及约束作为参数。后者使用 promise,因此你不需要使用回调。
通过在代码底部添加以下行来尝试调用你的 getLocalStream
函数:
getLocalStream();
刷新你的应用程序,它应该仍在 localhost:8000
上运行;你应该看到以下权限弹出窗口:
在允许麦克风使用之前,插入一些耳机,这样当你稍后取消静音时,你不会听到任何反馈。如果你没有看到权限提示,请打开检查器查看是否有任何错误。确保你的 JavaScript 文件正确链接到你的 index.html
。
这就是所有内容的综合效果:
/* 全局对等方 */
/**
* 获取当前呼叫者的本地音频流
* @param callbacks - 一个对象,用于设置成功或错误时的行为
* @returns {void}
*/
function getLocalStream() {
navigator.mediaDevices
.getUserMedia({ video: false, audio: true })
.then((stream) => {
window.localStream = stream;
window.localAudio.srcObject = stream;
window.localAudio.autoplay = true;
})
.catch((err) => {
console.error(`你得到了一个错误:${err}`);
});
}
getLocalStream();
本文原文来自Mozilla开发者文档
热门推荐
自动化测试在敏捷方法论中的应用研究:对交付速度与质量的影响分析
读《资治通鉴》笔记之八十二:鸿门宴前的博弈
复诊无需排队 浙江不少医院新举措让患者更省心
团队担当如何解决
感冒药该怎么选,有哪些做法是不对的
爱,真的只是爱吗?揭秘情感分类背后的哲学思考
原来一直安装错了?室内通向楼梯间的出口不应安装“安全出口”标志!
择吉日的技巧与指南,如何选择合适的日子
黄瓜为什么不能与番茄同吃
T细胞淋巴瘤的诊断方法
软水VS硬水,哪种水对健康更有益?
硬水是一种什么水?从定义到影响的全面解析
2025年中国镁合金行业现状、竞争格局与发展趋势分析,产业整体集中度较高「图」
研究揭示:大豆种子大小如何影响发芽、生长和产量
如何连接笔记本电脑到无线网络(简单步骤让你轻松上网)
网织红细胞比率偏高:原因与应对措施
常规赛+季后赛总分破5万历史唯一!詹姆斯再创神迹
基于Z世代消费特征的电商渠道品牌包装设计研究
海兔子:海洋中的“变色龙”
雌激素六项检查挂什么科
一文了解什么是借贷记账法!
颈椎病和枕头有关?很多人的颈椎是被枕头搞“坏”的!
西周为什么实行同姓不婚?西周同姓不婚的理由揭秘
消防器材设备管理的基本要求
2025 社保补缴新规全解读:权益保障与政策要点
周田明教授:健康减重计划助力高血压患者科学调控血压
保险赔不赔肾结石
怀孕睡不好怎么办?几招解决提升孕妈的睡眠质量
如何在BIOS中启用CPU的虚拟化技术以运行虚拟机?
从“首战”到攻坚 辽宁加快打造先进制造业集群振兴东北