Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 媒体录制器跨浏览器以WAV格式保存_Javascript_Audio_Wav_Web Audio Api_Mediarecorder Api - Fatal编程技术网

Javascript 媒体录制器跨浏览器以WAV格式保存

Javascript 媒体录制器跨浏览器以WAV格式保存,javascript,audio,wav,web-audio-api,mediarecorder-api,Javascript,Audio,Wav,Web Audio Api,Mediarecorder Api,对于我来说,这是一个非常复杂的过程,以及Mozilla上记录的Web音频API的其余部分。然而除非我能让它以wave格式一致地录制音频,否则它对我来说毫无用处。我曾尝试在许多浏览器上设置MimeType,但在Mozilla不知道的情况下,这些浏览器似乎已被弃用。即使使用文档中的示例,任何设置MimeType的尝试都无法在任何代码中运行 如果有人有任何方法可以将此文件保存为wave,使用前端处理,而不使用服务器中介,我将非常感谢听到这一消息 可能值得注意的是,ogg格式在我之前一直适用,只要文件编

对于我来说,这是一个非常复杂的过程,以及Mozilla上记录的Web音频API的其余部分。然而除非我能让它以wave格式一致地录制音频,否则它对我来说毫无用处。我曾尝试在许多浏览器上设置MimeType,但在Mozilla不知道的情况下,这些浏览器似乎已被弃用。即使使用文档中的示例,任何设置MimeType的尝试都无法在任何代码中运行

如果有人有任何方法可以将此文件保存为wave,使用前端处理,而不使用服务器中介,我将非常感谢听到这一消息

可能值得注意的是,ogg格式在我之前一直适用,只要文件编码是wav。直到几天前,with还在我的BrowserRave/Chrome上工作,之后它开始以webm格式保存


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

我构建了一个软件包,它应该完全满足您的要求。它叫。它提供与本机MediaRecorder相同的接口,但允许使用自定义编解码器对其进行扩展。示例编解码器是wav

下面是如何使用它记录来自getUserMedia的流:


它将使用内置的MediaRecorder在Chrome中记录pcm数据。在Firefox和Safari中,Web音频API用于获取pcm数据。一旦数据被检索出来,它就会被发送到一个工作程序,该工作程序将其解码为wav。

我构建了一个软件包,该软件包应该完全满足您的要求。它叫。它提供与本机MediaRecorder相同的接口,但允许使用自定义编解码器对其进行扩展。示例编解码器是wav

下面是如何使用它记录来自getUserMedia的流:


它将使用内置的MediaRecorder在Chrome中记录pcm数据。在Firefox和Safari中,Web音频API用于获取pcm数据。一旦数据被检索出来,它就会被发送给一名工人,由他将数据解码为wav。

哇,拿那个克里斯·洛克来说,你是我最喜欢的克里斯。我正在测试,如果一切顺利,我会将其标记为正确。您是否打算从“可扩展媒体录制器”写入导入{MediaRecorder,register};?我现在有了,它正在工作。我已经证实,如果没有这一点,它是不起作用的。编辑队列已满,否则我将自己更改您的答案。非常感谢您让我意识到这个错误。我刚刚修复了示例代码。我直接从报纸上抄的。你想在那里修好还是我应该修好?我有一个问题,我想在图书馆报告,似乎本机MediaRecorder也在运行,我得到了未处理的拒绝错误:没有使用给定id存储的编码器实例。错误您能否在GitHub上打开一个问题,最好添加一些我可以运行的步骤来重现该问题?谢谢。哇,拿着那个克里斯·洛克,你是我最喜欢的克里斯。我正在测试,如果一切顺利,我会将其标记为正确。您是否打算从“可扩展媒体录制器”写入导入{MediaRecorder,register};?我现在有了,它正在工作。我已经证实,如果没有这一点,它是不起作用的。编辑队列已满,否则我将自己更改您的答案。非常感谢您让我意识到这个错误。我刚刚修复了示例代码。我直接从报纸上抄的。你想在那里修好还是我应该修好?我有一个问题,我想在图书馆报告,似乎本机MediaRecorder也在运行,我得到了未处理的拒绝错误:没有使用给定id存储的编码器实例。错误您能否在GitHub上打开一个问题,最好添加一些我可以运行的步骤来重现该问题?谢谢
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' });