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

发布于:2025-05-01 ⋅ 阅读:(11) ⋅ 点赞:(0)

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, 16
            var sampleRate = 8000; //输出采样率
            if (typeof audioContext == 'undefined') {
     
                audioContext = new AudioContext();
                audioInput = audioContext.createMediaStreamSource(stream); //输入信号 media>filter>destination
                var bufferSize = 4096;       // 每个块的大小是4k
                var inputChannelCount = 2;// 输入为双声道
                var outputChannelCount = 2;   // 输出为双声道
                scriptProcessorNode = audioContext.createScriptProcessor(bufferSize, inputChannelCount, outputChannelCount);//缓冲区大小,以样本帧为单位如果不传,或者参数为0,则取当前环境最合适的缓冲区大小, 取值为2的幂次方的一个常数

                // Create a biquadfilter

                biquadFilter 

网站公告

今日签到

点亮在社区的每一天
去签到