媒体录音机跨浏览器以WAV格式保存

问题描述 投票:0回答:2

Media Recorder 非常适合我,可以与 Mozilla 上记录的其余 Web Audio API 一起完成相当复杂的过程。然而。除非我能让它以波形格式一致地录制音频,否则它对我来说毫无用处。我曾尝试在许多浏览器上设置 MimeType,但在 Mozilla 不知情的情况下,这些浏览器似乎已被弃用,任何设置 mimeType 的尝试,即使使用文档此处中的示例,也无法在任何代码中工作。

如果有人有任何方法可以使用前端处理(不使用服务器中介)将此文件保存为波形,我将非常感激听到它。

可能值得注意的是,只要文件编码是 wav,ogg 格式以前就对我有用。 这个带有 源代码的示例直到几天前才在我的浏览器(Brave/Chrome)上运行,之后它开始保存为 webm 格式。

另外,值得注意的是,只要我能够在录制后使用 WebAudioAPI 获取通道数据进行处理,我就不会在这个项目中使用 MediaRecorder API。

javascript audio wav web-audio-api mediarecorder-api
2个回答
25
投票

我构建了一个包,它应该完全符合你的要求。它被称为“可扩展媒体记录器”。它提供与原生 MediaRecorder 相同的界面,但允许使用自定义编解码器“扩展”它。示例编解码器是 wav。

以下是如何使用它来录制来自 

getUserMedia()

的流:

import { MediaRecorder, register } from 'extendable-media-recorder';
import { connect } from 'extendable-media-recorder-wav-encoder';

await register(await connect());

const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
const mediaRecoder = new MediaRecorder(stream, { mimeType: 'audio/wav' });

它将使用内置的
MediaRecorder

在Chrome中记录pcm数据。在 Firefox 和 Safari 中,Web Audio API 用于获取 pcm 数据。检索到数据后,它会发送给工作人员,工作人员将其解码为 wav。

    


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.