使用 MediaStream Recording API 和 Web Audio API 在浏览器中处理音频(未完待续)
使用 MediaStream Recording API 和 Web Audio API 在浏览器中处理音频
1. 背景
最近项目上有个需求,需要实现:录音、回放录音、实现音频可视化效果、上传wav格式的录音等功能。于是乎,我就顺便调研了下如何在浏览器中处理音频,发现 HTML5 中有专门的API用来处理音频。
2. 核心概念
2.1 MediaStream
一个MediaStream是一个媒体内容的流。一个流中可能包含几个轨道:比如若干视频轨道和若干音频轨道。可以把它想象成这样:
或者,更形象点: 
2.2 MediaRecorder
MediaRecorder是MediaStream Recording API的核心接口,用来进行媒体录制。我们可以形象地把它想象成录音机:
new MediaRecorder(stream, options) ==> 
这里的 stream 就是一个 MediaStream。 它表示将要录制的流。它可以是:用户麦克风产生的数据流,或者来自<audio>, <video>, <canvas>的数据流等。
2.4 AudioContext
使用Web Audio API相关接口前,你必需创建一个AudioContext。一切操作都在这个环境里进行。一个AudioContext是一张图(Graph),里面有若干节点(Node),被有向线段连接,就像这样:

为了方便理解,我们可以把它想象成演唱会上的调音师:
它会把歌手和现场乐队的声音经过混合和加工,最终输出到扬声器里。
3. 如何录音
首先,我们可以使用getUserMedia向浏览器申请权限: 
navigator.mediaDevices.getUserMedia({ audio: true }).then((stream: MediaStream) => {
/*...*/
})
然后就可以从麦克风拿到MediaStream。
const mediaRecorder = new MediaRecorder(stream, options);
mediaRecorder.start();
mediaRecorder.ondataavailable = ...
4. 如何回放录音
5. 如何实现音频可视化效果(波形图,柱状图等)
使用 MediaStream Recording API 和 Web Audio API 在浏览器中处理音频(未完待续)的更多相关文章
- H5的Web Audio Api
概述 研究Web Audio Api的主要原因是:工作中需要在ios中实现声音的淡出效果,主要是通过setInterval来改audio标签的volume属性实现的,但是ios上面volume属性是只 ...
- Web Audio API之手把手教你用web api处理声音信号:可视化音乐demo
1.Web Audio API 介绍 Web Audio API 提供了在Web上控制音频的一个非常有效通用的系统 ,这些通用系统通俗的讲就是我们可以利用Web Audio API提供的各种方法操作各 ...
- 【Web Audio API】 — 那些年的 web audio
转 TAT.Jdo:[Web Audio API] - 那些年的 web audio 这主题主要是早期对 web audio api的一些尝试,这里整理一下以便以后翻阅,如有错误,诚请指正. 在这之前 ...
- 【HTML5】Web Audio API打造超炫的音乐可视化效果
HTML5真是太多炫酷的东西了,其中Web Audio API算一个,琢磨着弄了个音乐可视化的demo,先上效果图: 项目演示:别说话,点我! 源码已经挂到github上了,有兴趣的同学也可以去st ...
- 关于HTML5音频——audio标签和Web Audio API各平台浏览器的支持情况
对比audio标签 和 Web Audio API 各平台浏览器的支持情况: audio element Web Audio API desktop browsers Chrome 14 Yes ...
- [Javascript] Intro to the Web Audio API
An introduction to the Web Audio API. In this lesson, we cover creating an audio context and an osci ...
- 关于Web Audio API的入门
Web Audio API提供了一个简单强大的机制来实现控制web应用程序的音频内容.它允许你开发复杂的混音,音效,平移以及更多. 可以先看一下MDN的这篇文章<Web Audio API的运用 ...
- 使用Web Audio API绘制音波图
摘要:Web Audio API是对<audio> 标签功能上的补充,我们可以用它完成混音.音效.平移等各种复杂的音频处理,本文简单的使用其完成音波图的绘制. PS:本例子使用ES6编程, ...
- HTML5 ——web audio API 音乐可视化(二)
上一篇 web audio API 音乐可视化(一)介绍了一些基本的API,以及如何简单的播放一个音频,本篇介绍一下怎么对获取到的音频进行分析,并将分析后的数据绘制成图像. 最终效果请戳这里; 完整版 ...
- HTML5 ——web audio API 音乐可视化(一)
使用Web Audio API可以对音频进行分析和操作,最终实现一个音频可视化程序. 最终效果请戳这里; 完整版代码请戳这里,如果还看得过眼,请给一个start⭐ 一.API AudioContext ...
随机推荐
- centos7.x及centos8.x安装新版docker
前置步骤 # 如之前安装过docker,请先删除 yum remove docker docker-common docker-selinux docker-engine centos7 # cent ...
- linux下安装django2.2
安装 pip3 install django==2.2 创建项目 django-admin startproject pyweb 创建应用 django-admin startapp app01 修改 ...
- Lua 中如何实现继承
本文主要参考了菜鸟教程中的 Lua 面向对象,再加上自己学习过程的中思考,特此记录,如果文中有不对的地方,请不吝赐教. 这里就不在介绍面向对象的基本思想了,主要讲一讲 Lua 中如何实现继承,包括单继 ...
- 基于 BDD 理论的 Nebula 集成测试框架重构(下篇)
本文首发于 Nebula Graph 公众号 NebulaGraphCommunity,Follow 看大厂图数据库技术实践. 在上篇文章中,我们介绍了 Nebula Graph 的集成测试的演进过程 ...
- python爬虫中文转成一个字符串类型的unicode字符串(%u)的问题
本文主要介绍某些爬虫在遇到%u627E%u4E0A%u95E8这种类似unicode编码的str类型数据时,无法直接使用decode('unicode-escape')方法来转成中文时的一个转码的解决 ...
- 排查 dotNET Core 程序内存暴涨的问题
0. 问题 新版本上线之后,发现内存猛涨,入站流量猛增,不清楚具体原因,部分接口提示 OOM 异常,随后 Pod 直接崩溃无限重启. 1. 准备 Pod 已经接入了 NewRelic 和 Graylo ...
- redis---面经
redis 偏应用的总结:redis 应用 Redis是什么? Redis是什么 对象 字符串 自增,键值对. SDS数据结构记录长度,已经使用,和总共长度,并且提前多余出容量,防止一直扩容缩容. 字 ...
- 22_播放器之使用SDL显示YUV视频
简介 使用SDL实现简单的YUV播放器. 这里还需要使用到像素格式和计算图片大小,这两个我们直接使用ffmpeg来实现,因此需要使用ffmpeg的libavutil/avutil.h和libavuti ...
- STM32 启动代码分析
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- 业务开发做到零 bug 有多难?
大家好,我是树哥,好久不见啦. 作为一个工作了 10 多年的开发,写业务代码总是写了不少的.但你想过做到零 bug 吗?我可是想过的,毕竟我还是有点追求的.不然每天都是浑浑噩噩地过,多没意思啊. 大概 ...