当前位置: 首页 > 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 

相关文章:

  • Group By Sets语法
  • 计算机二级MS Office第九套演示文稿
  • 数据结构与算法学习笔记(Acwing提高课)----动态规划·最长上升子序列模型
  • 【Linux系统】Ext系列文件系统
  • 【黑马JavaWeb+AI知识梳理】前端Web基础01 - HTML+CSS
  • Java进阶--面向对象设计原则
  • 大规模数据同步后数据总条数对不上的系统性解决方案:从字段映射到全链路一致性保障
  • Sam算法基本原理解析
  • CPU与GPU的功能与区别解析
  • 运维面试情景题:如果有一块新的硬盘要加入机架如何配置;如果新加了一台服务器,如何配置安全措施
  • DeepSeek预训练追求极致的训练效率的做法
  • 2025.04.26-淘天春招笔试题-第三题
  • MQL5教程 06 EA开发实战
  • 【OSG学习笔记】Day 11: 文件格式与数据交换
  • Dify中的文本分词处理技术详解
  • 财务管理域——企业风控系统设计
  • Channel如何安全地尝试发送数据
  • win11右键菜单改回win10模式
  • 基于 RAG 的 Text2SQL 全过程的 Python 实现详解,结合 LangChain 框架实现自然语言到 SQL 的转换
  • 20250426在ubuntu20.04.2系统上解决问题mkfs.exfat command not found
  • 杭州打造商业航天全产业链,请看《浪尖周报》第22期
  • 高璞任中国一汽党委常委、副总经理
  • 一回合摘下“狮心”,张名扬霸气回应观众:再嘘一个我听听
  • 兵韬志略|美菲“肩并肩”军演超越传统范畴,凸显防务合作重大转型
  • 金隅集团:今年拿地将选择核心热门地块,稳健审慎投资
  • 巴基斯坦最近“比较烦”:遣返阿富汗人或致地区局势更加动荡