blob与wav、mp3的关系

2023-08-07
786 字约 3 分钟
...

Web MediaRecorder 是 Web API 中的一部分,用于在浏览器中录制音频和视频。它可以捕获音频和视频数据,并将其保存为 Blob 对象。

Blob(二进制大对象)是一种数据类型,用于存储二进制数据。它可以包含任意类型的数据,包括音频、视频、图像等。Blob 对象通常与特定的文件格式相关联。所以,你提到的 WAV 和 MP3 都是常见的音频文件格式。

在使用 MediaRecorder 录制音频后,可以通过调用其 ondataavailable 事件来获取 Blob 数据。这个 Blob 对象可以表示录制的音频数据。接下来,你可以使用这个 Blob 对象对录制的音频进行处理或保存。

对于录制的音频数据而言,它本身不直接与 WAV 或 MP3 格式有关。Blob 只是表示原始的音频数据,并没有指定具体的文件格式。要将 Blob 数据转换为 WAV 或 MP3 格式,需要进行相应的编码操作。

对于 WAV 格式的编码,可以使用 Web API 中的 AudioContext 进行转换。你可以创建一个新的 AudioContext,通过 decodeAudioData 方法将 Blob 数据解码为 PCM 格式的音频数据,然后使用其他库或自定义代码将 PCM 数据编码为 WAV 格式。

对于 MP3 格式的编码,由于 MP3 是一种有损压缩格式,Web API 并不直接支持将 Blob 数据编码为 MP3 格式。你可以使用第三方库,如 LAMEjs 或 libmp3lame.js,来在浏览器中进行 MP3 编码。

总结来说,Web MediaRecorder 返回的 Blob 对象是原始录制的音频数据,可以使用特定的编码库将其转换为 WAV 或 MP3 格式。

react-media-recorder-2

react-audio-voice-recorder

audio-react-recorder

如果您觉得这篇文章有帮助,请点个赞吧~

分享文章

相关文章

更多文章 →
web2024-03-12
手机chrome浏览器真机调试PC端本地的项目_chrome 测试pc端
1.本次实验环境 操作系统: win10 10.0.19042 PC端: 97.0.4692.99(正式版本) (64 位) :Android 10; MIX 2S Build/QKQ1.190828.002 chrome浏览器手机端:96.0.4664.104 2.前期准备 1. 将手机的开发者模式打开,不同手机可能打开的方式不同。(百度自查) 2. 用数据线将手机与电脑进行连接。(注意部分数据线只有充电功能,不能传输数据) 3. 手...
学习
八股文2026-08-20
Embedding 向量模型:从语义表示到相似度计算
前言 大模型「读懂」文字靠的是 token,但 token 之间只有离散的编号关系,模型并不知道「苹果」和「李子」在语义上很近。要让程序能「理解」两段文字的相似程度,必须先把文本映射成一个 高维向量 ,再用几何方法比较。这一步就是 Embedding。 本篇基于我本地 今天的真实代码,从语义表示讲到余弦相似度,并复盘几个踩过的真实坑。 一、为什么需要 Embedding 传统关键词检索是「字面匹配」: Embedding 做的是「语义匹...
面试
八股文2026-08-19
前端面试100题
前端面试 100 题 适用方向:中高级前端 / React / Vue / Next.js / Nuxt / TypeScript / 工程化 / 实时通信 / Electron / Node.js / AI 应用前端 使用方式:优先掌握“标准回答”,再练“面试官追问”,最后把“结合你的简历怎么答”组织成自己的项目故事。 说明 “结合你的简历怎么答”只使用你简历中已经出现的项目与技术事实。 “标准回答 / 追问”属于通用前端知识总结,用...
面试
八股文2026-08-19
深入理解 JavaScript 原型与原型链:从关系图到核心逻辑 - heshanwan - 博客园
在 JavaScript 世界里, 原型(Prototype)和原型链(Prototype Chain) 是理解对象继承、属性查找机制的基石。很多开发者初学时对它们 “又爱又恨”,这篇文章将结合经典关系图,用通俗易懂的方式拆解原型与原型链的核心逻辑,帮你彻底掌握这套机制!   一、先搞懂几个核心概念 在分析关系图前,先明确 JavaScript 中与原型相关的关键概念,避免后续混淆: 1\. 函数对象与普通对象 函数对象 :由...
面试
八股文2026-08-17
JavaScript 闭包
摘要 :闭包(Closure)是 函数与其词法环境(Lexical Environment)的组合 ——一个函数可以"记住"并访问它被创建时所处的外部作用域中的变量,即使它在该作用域之外被执行。一句话记忆: 函数打包了出生地的变量,走到哪都能用 。核心要点:① 内部函数引用外部变量即形成闭包;② 闭包实现变量私有化/数据封装/柯里化;③ 潜在风险是内存泄漏和循环引用;④ 避免泄漏需手动解除引用和及时移除监听器。 一、什么是闭包 1.1...
面试
八股文2026-08-17
this 指向与 call / apply / bind
第 1 段(10min)回顾与预习:为什么必须搞懂 this 1.1 先接昨日(闭包)的线 昨天你学了 闭包 。闭包解决的是"函数记住它定义时所在作用域里的变量"。 闭包回答的问题是: “这个函数能访问到哪些变量?” → 看定义位置(词法作用域)。 而今天的主角 回答的是一个完全不同的问题: “这个函数执行时,站在谁的角度说话?” → 看 调用位置 (谁调用的、怎么调用的)。 一句话概括两者的分工: 变量看 定义处 , 看 调用处 。这...
面试

评论

请登录后发表评论

去登录
加载评论中...