当前位置: 首页 > news >正文

vue3获取麦克风权限通过websocket进行通话

ps:以下为 h5 + jquery 的代码,看一眼就知道vue怎么写了,如果实在不会直接丢给 ai 重构成 vue 即可
在这里插入图片描述

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>test</title><script type="text/javascript" src="./test_files/jquery-1.7.2.min.js"></script>
</head><body><div><button id="startConnect">开始采集</button><button id="stopConnect">结束采集</button><button id="intercomBegin">开始对讲</button><button id="intercomEnd">关闭对讲</button></div><script type="text/javascript">var devid = 1979;var talktype = 0;var port = 22101;url = "ws://socket链接地址"$(function () {var url2 = "http://国标对话的接口(可以忽略)";var addVoiceProxy2 = function (devid, port, pause) {$.ajax({type: "GET",async: false,url: url2,data: {},dataType: "json",success: function (data) {console.log(data);}});}//addVoiceProxy2(38,22101,1);})/** WebSocket*/var useWebSocket = function () {window.ws1 = new WebSocket(window.url);window.ws1.binaryType = 'blob'; //二进制类型,传输的是 ArrayBuffer 类型的数据window.ws1.onopen = function () {console.log('onopen');if (window.ws1.readyState == 1) { //ws进入连接状态,则发送数据//window.startConnect();}};window.ws1.onmessage = function (msg) {if (window.printLog) {log("recv" + msg.data + "\n");console.info(msg)}}window.ws1.onerror = function (err) {console.info(err)}if (window.ws1 && window.ws1.readyState != 1) {window.ws1 = new WebSocket(window.url);}window.ws1.binaryType = 'blob'; //传输的是 ArrayBuffer 类型的数据window.ws1.onopen = function () {console.log('onopen');if (window.ws1.readyState == 1) { //ws进入连接状态,则每隔500毫秒发送一包数据window.startConnect();}};window.ws1.onmessage = function (msg) {if (window.printLog) {log("recv" + msg.data + "\n");console.info(msg)}}window.ws1.onerror = function (err) {console.info(err)}}//是否开启gb28181-2016开关/*** 开启GB28181-2016对讲开关* devid 设备数据库中的唯一递增的编号* port 媒体服务端口* pause 为1表示开始对讲,为0停止对讲* */var addVoiceProxy = function (devid, port, pause) {$.ajax({type: "GET",url: "/?r=mediaKit/AddVoiceProxy&devid=" + devid + "&index=0&mediaPort=" + port + "&debug=true&type=1" + "&pause=" + pause,data: {},dataType: "json",success: function (data) {console.log(data);}});}//录音对象var Recorder = function (stream) {var sampleBits = 16; //输出采样数位 8, 16var sampleRate = 8000; //输出采样率if (typeof audioContext == 'undefined') {audioContext = new AudioContext();audioInput = audioContext.createMediaStreamSource(stream); //输入信号 media>filter>destinationvar bufferSize = 4096;       // 每个块的大小是4kvar inputChannelCount = 2;// 输入为双声道var outputChannelCount = 2;   // 输出为双声道scriptProcessorNode = audioContext.createScriptProcessor(bufferSize, inputChannelCount, outputChannelCount);//缓冲区大小,以样本帧为单位如果不传,或者参数为0,则取当前环境最合适的缓冲区大小, 取值为2的幂次方的一个常数// Create a biquadfilterbiquadFilter 
http://www.xdnf.cn/news/158959.html

相关文章:

  • 【AI提示词】财务顾问
  • 《TCP/IP详解 卷1:协议》之第七、八章:Ping Traceroute
  • WPF 上位机开发模板
  • Python爬虫-爬取汽车之家各品牌月销量榜数据
  • 如何快速轻松地恢复未保存的 Word 文档:简短指南
  • SLAM学习系列——ORB-SLAM3安装(Ubuntu20-ROS/Noetic)
  • Linux扩展
  • 显示器关闭和鼠标键盘锁定工具
  • 《USB技术应用与开发》第四讲:实现USB鼠标
  • 量子计算与GPU的异构加速:基于CUDA Quantum的混合编程实践
  • 微信小程序 template 模版详解
  • React 与 Vue 虚拟 DOM 实现原理深度对比:从理论到实践
  • 青少年编程与数学 02-018 C++数据结构与算法 11课题、分治
  • IPOF方法学应用案例:动态电压频率调整(DVFS)在AIoT芯片中的应用
  • 【Hive入门】Hive动态分区与静态分区:使用场景与性能对比完全指南
  • zookeeper在kafka中起什么作用?
  • 模板引擎语法-算术运算
  • BT169-ASEMI无人机专用功率器件BT169
  • Netmiko 源码解析
  • Gewechat启动启动报错
  • 计算机网络 | 应用层(3)-- 因特网中的电子邮件
  • PCL绘制点云+法线
  • 2025.04.26-饿了么春招笔试题-第三题
  • 网络原理 ——TCP 协议
  • Spring Boot 连接 Microsoft SQL Server 实现登录验证
  • 开源AI智能名片链动2+1模式S2B2C商城小程序源码赋能下的社交电商创业者技能跃迁与价值重构
  • 基于大模型底座重构司法信息系统
  • 软件设计原则
  • C语言中宏的高级应用
  • Astro canvas大屏从iotDA上抽取设备影子的参数的详细操作实施路径