前端如何播放二进制音频数据

ops/2025/2/21 0:07:08/

音频数据

播放数据 

javascript">const tryListen = async (row) => {awakenPlay(row.sid).then((res) => {   // 请求接口,拿到二进制音频数据const binaryData = atob(res.data);// 将二进制数据转换为 Uint8Arrayconst byteArray = new Uint8Array(binaryData.length);for (let i = 0; i < binaryData.length; i++) {byteArray[i] = binaryData.charCodeAt(i);}const offset = 42; // 跳过可能的头部数据(假设前 42 字节是 WAV 头部),否则播放开始处有杂音// 将 Uint8Array 转换为 Int16Arrayconst pcmData = new Int16Array(byteArray.buffer, offset);// 创建 AudioContextconst audioContext = new window.AudioContext();// 创建 AudioBufferconst audioBuffer = audioContext.createBuffer(1, pcmData.length, 16000); // 单声道,16000 Hzconst channelData = audioBuffer.getChannelData(0);// 将 PCM 数据归一化到 [-1, 1] 范围for (let i = 0; i < pcmData.length; i++) {channelData[i] = pcmData[i] / 32768.0;}// 播放音频const source = audioContext.createBufferSource();source.buffer = audioBuffer;source.connect(audioContext.destination);source.start();});};


http://www.ppmy.cn/ops/159656.html

相关文章

线程的多种创建方式和使用

一、线程的多种创建方式 在 Java 中&#xff0c;创建线程有多种方式&#xff0c;每种方式都有其特定的应用场景。以下是 Java 中常用的几种创建线程的方式&#xff0c;以及它们的具体实现&#xff1a; 1、通过继承 Thread 类创建线程 Java 中的 Thread 类提供了一个可执行的…

JavaScript与AJAX:让网页动起来的魔法与秘密

前言:当网页开始学会"呼吸" 还记得20年前的互联网吗?每次点击链接都要经历漫长的白屏等待,网页像笨拙的机器人一样机械地刷新。直到有一天,JavaScript遇见AJAX,网页突然被注入了灵魂。就像给木偶系上了提线,原本死板的页面开始学会呼吸,能悄悄和服务器说悄悄…

OlympicArena 论文简介

近年来&#xff0c;大型语言模型&#xff08;LLMs&#xff09;和大型多模态模型&#xff08;LMMs&#xff09;的飞速发展&#xff0c;让AI逐渐展现出接近人类水平的认知推理能力。然而&#xff0c;如何科学评估AI在复杂问题解决中的真实水平&#xff0c;一直是学术界和产业界的…

【Java进阶篇】——第11篇:Java 8 新特性及使用

第11篇&#xff1a;Java 8 新特性及使用 Java 8 是一次里程碑式的更新&#xff0c;引入了多项革新特性&#xff0c;极大地提升了开发效率和代码表现力。本文将从 Lambda表达式、Stream API、时间日期API、Optional类 等核心特性出发&#xff0c;结合实战场景和最佳实践&#x…

多目标蜻蜓算法-MODA-可用于(云计算资源分配/交通信号控制/网络路由优化)

多目标蜻蜓算法&#xff08;Multi-Objective Dragonfly Algorithm&#xff0c;MODA&#xff09;是一种基于群体智能的优化算法&#xff0c;主要用于解决多目标优化问题。以下是对其的详细介绍&#xff1a; 具体完整算法请跳转&#xff1a;多目标蜻蜓算法-MODA-可用于&#xff0…

【系列教程】Python第四课:条件判断 | 让程序学会思考的秘密

&#x1f3af; 本节目标 掌握if-elif-else逻辑结构理解比较运算符的用法学会用布尔值控制程序流程完成智能登录验证系统开发 1️⃣ if语句基础&#xff08;程序决策树) &#x1f680; 基础语法 # 简单判断示例 age int(input("请输入你的年龄&#xff1a;"))if …

K8s:kubernetes.io~csi 目录介绍

目录标题 **1. 进入 CSI 相关目录****2. PVC 相关目录操作****3. 挂载点相关操作****4. CSI PVC 的使用流程****5. 总结** 在 Kubernetes&#xff08;K8s&#xff09;中&#xff0c;容器存储接口&#xff08;CSI&#xff09; 是一种标准&#xff0c;用于将存储系统暴露给 K8s 中…

无人设备遥控器之视频回传篇

无人设备遥控器的视频回传是指将无人设备&#xff08;如无人机&#xff09;采集到的视频信号传输回遥控器或其他接收设备的过程。这一过程在诸多应急情境中显得尤为重要&#xff0c;它能为指挥中心的决策者、调度系统以及AI分析等提供实时画面。 一、主流回传方式 目前&#x…