首页 > 其他分享 >使用 MediaStream Recording API 和 Web Audio API 在浏览器中处理音频(未完待续)

使用 MediaStream Recording API 和 Web Audio API 在浏览器中处理音频(未完待续)

时间:2023-08-04 18:02:23浏览次数:32  
标签:Web 浏览器 音频 Recording API MediaStream

使用 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. 如何实现音频可视化效果(波形图,柱状图等)

标签:Web,浏览器,音频,Recording,API,MediaStream
From: https://www.cnblogs.com/forzhaokang/p/16256700.html

相关文章

  • 理解websocket
    引用:https://zhuanlan.zhihu.com/p/328459701.websocket协议: 2.websocket原理:与http协议一样,WebSocket协议也需要通过已建立的TCP连接来传输数据。具体实现上是通过http协议建立通道,然后在此基础上用真正的WebSocket协议进行通信,所以WebSocket协议和http协议是有一......
  • SpringCloud之微服务API网关Gateway介绍
    目录1微服务API网关Gateway1.1网关简介1.2SpringCloudGateway介绍1.3Gateway特性1.4Gateway核心概念1.4.1路由1.4.1.1定义1.4.1.2动态路由1.4.2断言1.4.2.1默认断言1.4.2.2自定义Predicate1.4.3过滤器1.4.3.1默认过滤器1.4.3.2自定义Filter(GatewayFilter)1.4.3.2......
  • 漏洞复现报告:CVE-2020-2883 Weblogic反序列化漏洞
    OracleWebLogicServer漏洞研究报告一、漏洞信息搜集1.1漏洞信息表漏洞名称OracleWebLogicServer反序列化漏洞发布时间2020年4月16日漏洞编号CVE-2020-2883威胁类型反序列化漏洞危害级别高危影响版本OracleWebLogicServer10.3.6.0.0、12.1.3.0.0、12.2.1.3.0、12.2.1.4.0版......
  • web日刷
    一道题学习php原生类反方向的钟<?phperror_reporting(0);highlight_file(__FILE__);//flag.phpclassteacher{public$name;public$rank;private$salary;publicfunction__construct($name,$rank,$salary=10000){$this->name=$name;......
  • 在vue项目中封装WebSockets请求
    在Vue项目中封装WebSocket请求包括以下步骤:1.安装WebSocket库:首先,导入WebSocket库,例如`vue-native-websocket`或`socket.io-client`。根据项目需求选择适当的库,并根据官方文档进行安装和配置。2.创建WebSocket服务:在Vue项目中,可以创建一个WebSocket服务,用于管理连接、发送和接收......
  • zookeeper JavaApi 删除节点
    /**删除节点*1.删除单个节点*2.删除带有子节点的节点*3.必须成功的删除*4.回调***/@Testpublicvoiddelete1()throwsException{//1.删除单个节点client.delete().forPath("/app1");}@Testpublicvoiddelete2()throw......
  • web实现文件夹的上传和下载
    ​  上周遇到这样一个问题,客户上传高清视频(1G以上)的时候上传失败。一开始以为是session过期或者文件大小受系统限制,导致的错误。查看了系统的配置文件没有看到文件大小限制,web.xml中seesiontimeout是30,我把它改成了120。但还是不行,有时候10分钟就崩了。同事说,可能是客户这......
  • 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务(转)
    Spring,构建Java™平台和EnterpriseEdition(JavaEE)应用程序的著名框架,现在在其模型-视图-控制器(Model-View-Controller,MVC)层支持具象状态传输(REST)。RESTfulweb服务根据客户端请求生成多个具象(representations)很重要。在本篇文章中,学习使用HttpMessageConverter 生成......
  • 视频监控汇聚平台EasyCVR视频页面WebRTC流地址播放不了是什么原因?
    开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多路视频流,也能支持视频定时轮播。视频监控汇聚平台EasyCV......
  • zookeeper JavaApi 创建节点
    importorg.apache.curator.RetryPolicy;importorg.apache.curator.framework.CuratorFramework;importorg.apache.curator.framework.CuratorFrameworkFactory;importorg.apache.curator.retry.ExponentialBackoffRetry;importorg.apache.zookeeper.CreateMode;impo......