boxmoe_header_banner_img

(>wO``)❤

加载中

音流控制


avatar
bai, mo 2026年6月3日
文章导读
🐾 返回主页

xiao控制中心

00:00:00

🎵 视听总线

等待输入源…

📢 日志

系统就绪…
.xiao-portal-screen{position:fixed!important;top:0;left:0;width:100vw;height:100vh;background:#030206;z-index:999999;overflow:hidden} .xiao-portal-body{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;z-index:10;pointer-events:none} .xiao-portal-container{width:90%;max-width:900px} .xiao-portal-card{pointer-events:auto;background:rgba(20,20,30,0.8);padding:20px;border-radius:20px;border:1px solid rgba(255,255,255,0.1);margin:10px} .xiao-p-btn{padding:12px 24px;background:#333;color:#fff;border:none;border-radius:10px;cursor:pointer;margin:5px} .xiao-portal-back-btn{position:absolute;top:20px;left:80px;z-index:100000;color:#00ffcc;text-decoration:none;font-weight:bold} #xiaoPortalCanvas{position:absolute;top:0;left:0;width:100%;height:100%;z-index:0} (function(){ const c = document.getElementById(‘xiaoPortalCanvas’), ctx = c.getContext(‘2d’); let analyser, dataArray, hasAudio = false, stream; window.initAudio = () => { navigator.mediaDevices.getUserMedia({audio: true}).then(s => { stream = s; const ac = new (window.AudioContext || window.webkitAudioContext)(); const src = ac.createMediaStreamSource(s); analyser = ac.createAnalyser(); analyser.fftSize = 256; dataArray = new Uint8Array(analyser.frequencyBinCount); src.connect(analyser); hasAudio = true; document.getElementById(‘audioStatus’).innerText = “音频流:在线”; }); }; window.stopAudio = () => { if(stream) { stream.getTracks().forEach(t=>t.stop()); hasAudio = false; document.getElementById(‘audioStatus’).innerText = “音频流:已离线”; } }; function draw() { // 1. 浮光炫彩背景 ctx.fillStyle = ‘rgba(3,2,6,0.1)’; ctx.fillRect(0,0,c.width,c.height); // 2. 霓虹贝斯轮廓 (在背景中层) ctx.strokeStyle = ‘#ff00ff’; ctx.lineWidth = 4; ctx.shadowBlur = 15; ctx.shadowColor = ‘#ff00ff’; ctx.beginPath(); ctx.moveTo(c.width-200, 100); ctx.quadraticCurveTo(c.width-250, 300, c.width-200, 500); ctx.stroke(); ctx.shadowBlur = 0; // 3. 大型动态频谱 (最上层) if(hasAudio){ analyser.getByteFrequencyData(dataArray); for(let i=0; i { c.width=window.innerWidth; c.height=window.innerHeight; }; c.width=window.innerWidth; c.height=window.innerHeight; draw(); setInterval(()=>document.getElementById(‘xiaoPortalClock’).innerText=new Date().toLocaleTimeString(), 1000); })();