webRtc麦克风摄像头检测

最近在做webRtc相关音视频项目,碰到了很多用户不知道自己设备是否被支持发起webRtc,所以特意总结相关实用方法;

HTML
/*id方便一会把媒体流赋值过去, autoPlay: 自动播放 */
<audio id="devDetectionMicroRef" autoPlay></audio>
/*video建议知道宽高, autoPlay: 自动播放 */
<video id="devDetectionVideoRef" autoPlay width="640" height="480"></video>
检测麦克风相关
/* 全局变量 */
const audioSteam = {current: null
}
// 获取音视频轨道流
handleMicrophoneDetection(){navigator.mediaDevices.getUserMedia({audio: true}).then(stream => {audioSteam.current = stream;// 获取当前采集麦克风名称handleStreamGetMicroName();// 处理播放handleAudioPlay();}).catch(error => {let errorMessage = error + '';if (errorMessage.includes('Permission denied')) {errorMessage = '请开启麦克风权限';} else if (errorMessage.includes('Requested device not found')) {errorMessage = '请检测麦克风是否插入';};console.log('error', errorMessage)});
},
// 处理播放
handleAudioPlay(){const stream = audioSteam.current;const elm: HTMLVideoElement | any = document.getElementById('devDetectionMicroRef');if (elm) {elm.srcObject = stream;}
}
// 获取麦克风名
handleStreamGetMicroName(){if (audioSteam.current) {const audioTrack = audioSteam.current.getAudioTracks()[0];console.log(audioTrack.label);}
}
// 停止麦克采集
stopAudioSteam() {if (audioSteam.current) {audioSteam.current.getTracks().forEach((sender: any) => {sender.stop();});}
}
检测摄像头相关
/*全局变量*/
const videoSteam = {current: null
}
// 摄像头检测
handleCameraDetection() {navigator.mediaDevices.getUserMedia({video: true}).then((stream) => {videoSteam.current = stream;// 获取摄像头名称handleStreamGetCameraName();// 播放handleVideoPlay();}).catch((error) => {let errorMessage = error + '';if (errorMessage.includes('Permission denied')) {errorMessage = '请开启摄像头权限';} else if (errorMessage.includes('Requested device not found')) {errorMessage = '请检测摄像头是否插入';};console.log('error', errorMessage);})
}
// 播放
handleVideoPlay() {const stream = videoSteam.current;const elm: HTMLVideoElement | any = document.getElementById('devDetectionVideoRef');if (elm) {elm.srcObject = stream;}
}
// 根据stream获取摄像头名称
handleStreamGetCameraName() {if (videoSteam.current) {const videoTrack = videoSteam.current.getVideoTracks()[0];setGatherCameraName(videoTrack.label);}
}
// 停止摄像头采集
stopVideoSteam() {if (videoSteam.current) {videoSteam.current.getTracks().forEach((sender: any) => {sender.stop();});}
}
获取默认采集设备
handleDefaultDeviceId(type: number) {switch(type) {case 1: // 获取默认音频设备{navigator.mediaDevices.getUserMedia({audio: true}).then((stream) => {const tracks = stream.getTracks();for (let i in tracks) {// 获取音频默认采集设备idlet deviceId = tracks[i].getSettings().deviceId + '';tracks[i].stop();}}).catch((error) => {console.log('error', error);})}break;case 2: // 获取默认视频设备{navigator.mediaDevices.getUserMedia({video: true}).then((stream) => {const tracks = stream.getTracks();for (let i in tracks) {// 获取视频默认采集设备idlet deviceId = tracks[i].getSettings().deviceId + '';tracks[i].stop();}}).catch((error) => {console.log('error', error);})}break;}
},

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/757535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot+Vue交通管理在线服务系统的开发(源码+部署说明+演示视频+源码介绍)

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通…

经典面试智力题总结

常见面试智力题总结 本部分主要是笔者在练习常见面试智力题所做的笔记&#xff0c;如果出现错误&#xff0c;希望大家指出&#xff01; 常见智力题 时针与分针夹角度数问题&#xff1f; 分析&#xff1a; 当时间为 m 点 n 分时&#xff0c;其时针与分针夹角的度数为多少&…

React状态管理Mobx

1 https://zh.mobx.js.org/README.html 2 https://juejin.cn/post/7046710251382374413 3 https://cn.mobx.js.org/refguide/observable.html ​​mobx入门基础教程-慕课网​​ ​​Mobx学习 - 掘金​​ 十分钟入门 MobX & React ​​十分钟入门 MobX & React​​…

警惕!On Hold被踢,2本1区,5本Springer旗下,共8本SCI/SSCI被剔除!

毕业推荐 SSCI&#xff08;ABS一星&#xff09; • 社科类&#xff0c;3.0-4.0&#xff0c;JCR2区&#xff0c;中科院3区 • 13天录用&#xff0c;28天见刊&#xff0c;13天检索 SCIE&#xff1a; • 计算机类&#xff0c;6.5-7.0&#xff0c;JCR1区&#xff0c;中科院2区…

农业气象站在农业生产中的应用—气象科普

农业气象站在农业生产中发挥着至关重要的作用。它能够有效监测和记录农田环境中的各类气象要素&#xff0c;为农民提供科学、准确的气象数据&#xff0c;帮助他们更好地掌握天气变化规律&#xff0c;从而合理安排农业生产活动。 首先&#xff0c;农业气象站能够实时提供温度、…

使用 Clojure 进行 OpenCV 开发简介

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;如何将OpenCV Java 与Eclipse结合使用 下一篇&#xff1a; OpenCV4.9.0在Android 开发简介 ​警告 本教程可以包含过时的信息。 从 OpenCV 2.4.4 开始&#xff0c;OpenCV 支持…

Hibernate相关问题

文章目录 Hibernate是如何简化JDBC操作的&#xff1f;解释Hibernate的ORM概念Hibernate中的Session和Transaction有什么区别&#xff1f;Session&#xff1a;Transaction&#xff1a; Hibernate有哪些缓存类型&#xff1f;它们是如何工作的&#xff1f;一级缓存&#xff08;Fir…

挑战设计极限!电路仿真软件成功案例大揭秘,助您圆梦创新之路

在电子设计领域&#xff0c;电路仿真软件扮演着至关重要的角色。它们不仅能够帮助工程师们模拟和分析电路的性能&#xff0c;还能够加速设计过程&#xff0c;降低成本&#xff0c;提高产品的质量和可靠性。今天&#xff0c;让我们一起挑战设计极限&#xff0c;揭秘电路仿真软件…

服务器版本ros镜像,包含了CAN通讯以及VNC界面操作

以下镜像包含了ros的moveit、novnc、CAN通讯&#xff0c;并且可以web操作界面: 19900617/ros-moveit-rviz-gazebo:noetic docker-compose.yml配置文件如下: version: 3services:ros:container_name: rosimage: 19900617/ros-moveit-rviz-gazebo:noeticentrypoint: ["b…

Clickhouse MergeTree异常数据处理

作者&#xff1a;俊达 说明 clickhouse mergetree的数据文件如果遇到数据损坏&#xff0c;可能会导致clickhouse无法启动。 本文章说明如何处理这类问题。 测试 我们先人为模拟破坏mergetree数据文件&#xff1a; detach table&#xff1a; ck01 :) detach table metric…

探索.NET中的定时器:选择最适合你的应用场景

概述&#xff1a;.NET提供多种定时器&#xff0c;如 System.Windows.Forms.Timer适用于UI&#xff0c;System.Web.UI.Timer用于Web&#xff0c;System.Diagnostics.Timer用于性能监控&#xff0c;System.Threading.Timer和System.Timers.Timer用于一般定时任务。在.NET 6及以上…

Java基础---反射

什么是反射&#xff1f; 反射允许对成员变量&#xff0c;成员方法和构造方法的信息进行编程访问。 这么说可能比较抽象&#xff0c;可以简单理解为&#xff1a;反射就是一个人&#xff0c;可以把类里面的成员变量&#xff0c;成员方法&#xff0c;构造方法都获取出来。 并且可…

Springcloud智慧工地APP云综合平台源码 SaaS服务

目录 智慧工地功能介绍 一、项目人员 二、视频监控 三、危大工程 四、绿色施工 五、安全隐患 具体功能介绍&#xff1a; 1.劳务管理&#xff1a; 2.施工安全管理&#xff1a; 3.视频监控管理&#xff1a; 4.机械安全管理&#xff1a; 5.危大工程监管&#xff1a; …

项目技术问题记录-内网环境下搭建LVS实现四层负载

原创作者&#xff1a;田超凡&#xff08;程序员田宝宝&#xff09; 版权所有&#xff0c;引用请注明原作者&#xff0c;严禁复制转载 lvs实现四层负载DR模式什么是lvs LVS是Linux Virtual Server的简写&#xff0c;意即Linux虚拟服务器&#xff0c;是一个虚拟的服务器集群系统…

ctf_show笔记篇(web入门---反序列化)

目录 反序列化 254&#xff1a;无用&#xff0c;是让熟悉序列化这个东西的 255&#xff1a;直接使$isViptrue 256&#xff1a;还是使用变量覆盖 257&#xff1a;开始使用魔法函数 258&#xff1a;将序列化最前面的过滤了&#xff0c;使用绕过 259: 这一题需要看writeup才…

windows10 WSL启动Ubuntu虚拟机,安装DolphinScheduler

文章目录 1. 启动WSL与虚拟机2. 安装Docker与DolphinScheduler容器 1. 启动WSL与虚拟机 使用管理员权限运行命令&#xff1a; Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux重启后即可创建虚拟机 在Microsoft Store中搜索Ubuntu&…

研二双9找个日常实习都找不到,哎!

投了几家日常&#xff0c;要不就面完没反应&#xff0c;要不就秒挂&#xff0c;看不透了。是最近都在忙着处理春招和暑期实习吗&#xff0c;怎么连个日常实习都找不到&#xff1f; 个人背景双9&#xff0c;lc以前刷过200道&#xff0c;最近没怎么碰过。 腾讯 3.13 一面&#xf…

给老婆整了个短剧搜索机器人APP

最近短剧挺火&#xff0c;很多群友们都在做一些资源分享&#xff0c;老胡于是基于这些资源做了个短剧搜索引擎&#xff0c;挺多朋友喜欢看的&#xff0c;我老婆也在看哈哈&#xff0c;真上头&#xff0c;废话不多说&#xff0c;上短剧机器人。 短剧机器人 直接在微信群输入&…

麒麟 V10 一键安装 Oracle 11GR2(231017)单机版

Oracle 一键安装脚本&#xff0c;演示 麒麟 V10 一键安装 Oracle 11GR2 单机版过程&#xff08;全程无需人工干预&#xff09;&#xff1a;&#xff08;脚本包括 ORALCE PSU/OJVM 等补丁自动安装&#xff09; ⭐️ 脚本下载地址&#xff1a;Shell脚本安装Oracle数据库 脚本第…

提升合规性!Zoho如何优化CRM产品合规性?

在企业数字化和信息化高速发展的今天&#xff0c;CRM管理系统成为越来越多企业的选择。然而&#xff0c;不是所有CRM供应商都有合规意识。合规性不应当只是一项法律规定&#xff0c;更是保证CRM供应商持续发展、赢得客户信赖以及应付监管压力的关键支撑。Zoho对企业合规性的重视…