我的编程空间,编程开发者的网络收藏夹
学习永远不晚

HTML5音频API Web Audio有什么作用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

HTML5音频API Web Audio有什么作用

本篇内容介绍了“HTML5音频API Web Audio有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

HTML5音频API的主要框架和工作流程如下图,在 AudioContext 音频上下文中,把音频文件转成 buffer 格式,从音频源 source  开始,经过 AuidoNode 处理音频,***到达 destination 输出音乐。这里形成了一个音频通道,每个模块通过 connect  方法链接并传送音频。

HTML5音频API Web Audio有什么作用

AudioContext

AudioContext 是一个音频上下文,像一个大工厂,所有的音频在这个音频上下文中处理。

let audioContext = new(window.AudioContext || window.webkitAudioContext)();

AudioContext 音频上下文提供了很多属性和方法,用于创建各种音频源和音频处理模块等,这里只介绍一部分,更多属性和方法可到MDN查阅文档。

属性

AudioContext.destination

返回 AudioDestinationNode 对象,表示当前 AudioContext 中所有节点的最终节点,一般表示音频渲染设备。

方法

AudioContext.createBufferSource()

创建一个 AudioBufferSourceNode 对象, 他可以通过 AudioBuffer 对象来播放和处理包含在内的音频数据。

AudioContext.createGain()

创建一个 GainNode,它可以控制音频的总音量。

AudioContext.createBiquadFilter()

创建一个 BiquadFilterNode,它代表代表一个双二阶滤波器,可以设置几种不同且常见滤波器类型:高通、低通、带通等。

createOscillator()

创建一个 OscillatorNode, 它表示一个周期性波形,基本上来说创造了一个音调。

音频转换成Buffer格式

使用decodeAudioData()方法把音频文件编译成buffer格式。

function decodeAudioData(audioContext, url) {     return new Promise((resolve) => {         let request = new XMLHttpRequest();         request.open('GET', url, true);         request.responseType = 'arraybuffer';         request.onload = () => {             audioContext.decodeAudioData(request.response, (buffer) => {                 if (!buffer) {                     alert('error decoding file data: ' + url);                     return;                 } else {                     resolve(buffer);                 }             })         }         request.onerror = function() {             alert('BufferLoader: XHR error');         }         request.send();     }) }  let buffer = decodeAudioData(audioContext, './sounds/music.mp3');

AudioNode

音频节点接口是一个音频处理模块。包括音频源,音频输出,中间处理模块。

方法

AudioNode.connect()

链接两个 AudioNode 节点,把音频从一个 AudioNode 节点输出到另一个 AudioNode 节点,形成一个音频通道。

AudioNode.disconnect()

把 AudioNode 节点与其他节点断开链接。

AudioBufferSourceNode

音频源有多种,这里只介绍 buffer 的音频源,buffer 的音频源通过 AudioContext 接口的 createBufferSource  方法来创建。音频源节点继承 AudioNode 音频节点。

let bufferSource = audioContext.createBufferSource();

创建了 AudioBufferSourceNode 对象后,把 buffer 格式的音频数据赋值给 AudioBufferSourceNode 对象的  buffer 属性,此时音频已经传递到音频源,可以对音频进行处理或输出。

bufferSource.buffer = buffer;

方法

AudioBufferSourceNode.start(when[, duration])

开始播放。

  • when:延迟播放时间,单位为秒。

  • offset:定位音频到第几秒开始播放。

  • duration:从开始播放结束时长,当经过设置秒数后自动结束音频播放。

AudioBufferSourceNode.stop([when])

  • when:延迟停止时间,单位为秒。

停止播放,注意调用该方法后,无法再次调用 AudioBufferSourceNode.start 播放。

AudioDestinationNode

音频终点是通过 AudioContext 接口的 destination 属性访问的。音频终点继承 AudioNode 音频节点,

AudioDestinationNode  节点无法再把音频信息传递给下一个音频节点,即无法再链接其他音频节点,因为他已经是终点,没有输出,也可以理解为他自己就是输出。

let audioDestinationNode = audioContext.destination;

此时我们有音频起点 AudioBufferSourceNode 和音频终点 AudioDestinationNode ,使用  AudioNode.connect() 方法把起点和终点链接起来,就形成了一条有输入输出的音频通道,可以把音频直接播放出来。

bufferSource.connect(audioDestinationNode);

GainNode

用于音量变化。它是一个 AudioNode 类型的音频处理模块。

let gainNode = audioContext.createGain();

把音频源、音频输出和音频处理模块链接一起,形成可控制音量大小的音频。

bufferSource.connect(gainNode);  gainNode.connect(audioDestinationNode);  let controlVolume = value => {  gainNode.gain.value = value);  }  // 两倍音量播放  controlVolume(2);

HTML5音频API Web Audio有什么作用

BiquadFilterNode

表示一个简单的低频滤波器,可控制声调。它是一个 AudioNode 类型的音频处理模块。

let filterNode = audioContext.createBiquadFilter();

输出一个变调的音频:

bufferSource.connect(filterNode);  filterNode.connect(audioDestinationNode);  let controlFrequency = function(value) {  filterNode.frequency.value = value;  }  // 音频为1000变调  controlFrequency(1000);

多个音频源

在一个音频上下文中,可以有多个音频处理通道,即多个音频源同时输出。各个音频处理通道内的操作是独立的,不影响其他音频通道。

HTML5音频API Web Audio有什么作用

多个音频处理模块

一个音频源可以经过多个音频处理模块处理,音频处理模块叠加效果后输出。

HTML5音频API Web Audio有什么作用

“HTML5音频API Web Audio有什么作用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

HTML5音频API Web Audio有什么作用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

HTML5 audio标签的作用是什么

HTML5 audio标签用于在网页上嵌入音频文件,并可以通过控件进行播放、暂停、调整音量等操作。它可以播放多种音频格式,如MP3、WAV、Ogg等,并支持在不同浏览器和设备上进行兼容。通过使用audio标签,开发者可以轻松地为网页添加音频
2023-10-12

Python Audio tools有什么作用

这篇文章主要讲解了“Python Audio tools有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python Audio tools有什么作用”吧!Python Audio
2023-06-02

视频音频转换器Swift Converter for Mac有什么用

这篇文章将为大家详细讲解有关视频音频转换器Swift Converter for Mac有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Swift Converter for Mac是Mac平台上一
2023-06-05

web前端框架有什么作用

本篇内容主要讲解“web前端框架有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“web前端框架有什么作用”吧!一、前端框架是什么意思顾名思义,前端框架是用来简化网页设计的框架,它帮助开发
2023-06-27

Web安全的HTTP协议有什么作用

这篇文章主要讲解了“Web安全的HTTP协议有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Web安全的HTTP协议有什么作用”吧!超文本传输协议(HTTP,Hyper Text T
2023-06-17

计算机中后面三个音频孔红绿蓝的作用是什么

小编给大家分享一下计算机中后面三个音频孔红绿蓝的作用是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!蓝色音频孔用于接外置的音频设备,可将音频输入到电脑里;绿色音频孔用于接音箱/耳机,输出音频给音箱来放出音乐,或者通过耳
2023-06-13

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录