Javascript Node.js可以';不要制造斑点?
我正在使用node.js,并将音频流传输到node.js服务器。 现在我注意到在构建音频块的过程中:Javascript Node.js可以';不要制造斑点?,javascript,html,node.js,audio,Javascript,Html,Node.js,Audio,我正在使用node.js,并将音频流传输到node.js服务器。 现在我注意到在构建音频块的过程中: var audioBlob = new Blob([dataview], { type: 'audio/wav' }); 我在新的Blob中得到了一个ReferenceError。 似乎不支持Blob。 如何创建要使用node.js fs模块保存的blob 谢谢大家 建议您阅读以下内容: 我是说,我想我不知道你想干什么。可能没有用于blob的模块,但如果您只想将某些内容写入磁盘,则有fs模块。
var audioBlob = new Blob([dataview], { type: 'audio/wav' });
我在新的Blob中得到了一个ReferenceError。
似乎不支持Blob。
如何创建要使用node.js fs模块保存的blob
谢谢大家 建议您阅读以下内容: 我是说,我想我不知道你想干什么。可能没有用于blob的模块,但如果您只想将某些内容写入磁盘,则有fs模块。。此代码无法直接工作,但是
var fs = require('fs')
, express = require('express')
app.post('/upload', function (req, res) {
// asynch call to write file to disk
fs.write("/tmp/file.mp3", req.params.body, function (err) {
if (err) console.log(err)
});
res.end();
});
只需将mp3或任何东西上传到/上传,它就会将其写入磁盘。您可以执行任何需要的验证。此问题的解决方案是创建一个可以在数组缓冲区和节点缓冲区之间转换的函数。:) 在最近的节点版本中,它只是:
let buffer = Buffer.from(arraybuffer);
let arraybuffer = Uint8Array.from(buffer).buffer;
只需使用
交叉blob
:
const Blob=require(“交叉Blob”);
新斑点([]);
//=>Blob{size:0,类型:'}
//全局补丁(支持is blob等外部模块)。
globalThis.Blob=Blob;
另一个要考虑的解决方案是使用<强> Base64 String 将数据从服务器传输到客户端。
我正在一个Node.js项目中工作,在该项目中,我以ArrayBuffer的形式接收音频数据,并希望在浏览器中发送和播放这些数据。我的大部分困难都来自于尝试将ArrayBuffer发送到客户端,或者尝试转换ArrayBuffer并发送缓冲区
对我来说,最简单的解决办法是
在服务器上将ArrayBuffer转换为Base64编码的字符串
从服务器向客户端返回/发送Base64字符串
在客户端创建音频元素/对象并播放声音
我过去常常执行ArrayBuffer>Base64字符串转换(不过,在没有软件包的情况下进行转换可能很简单)
我使用来自的提示在客户端创建音频元素
*我在测试限制方面做得不多,所以我不知道如何处理大型音频文件。什么是Blob?它来自哪里?是的,但blob不是原生Node.js类型。。你知道,数字、字符串、布尔值、对象、数组等等。为什么不为NPM创建一个对象原型或模块呢?你有没有检查过NPM,看看你需要什么?对我来说,那些被否决的人似乎没有意识到这个问题显然没有解决办法,这就是为什么我要问的原因。@Jonathan,我会看看这个,但是可以定义MIME类型吗?@zer02是和否。您可以始终向缓冲区添加MIME
属性,因为它仍然是动态的。但是,MIME类型用于传输二进制数据;保存到磁盘就不那么重要了。您好,我将GetUserMedia Audio的音频缓冲区流式传输到node.js服务器,并希望将阵列编码为WAV。我使用了recorder.js。我甚至扩展了它。问题是创建Blob服务器端而不是客户端。我需要知道是否有办法在node.js内创建blob,因为我正在将音频直接流式传输到node.js,并希望在服务器上构建wav/mp3文件。:-)你能把水滴的内容放进缓冲区,然后把缓冲区射过去吗?Node知道如何处理缓冲区,您可以将二进制数据放入缓冲区。我已经将客户端blob二进制数据传输到Node.js(streamed),当时音频首先在客户端录制,然后用Node.js处理,它就工作了。这次我想让node.js控制整个过程。你成功让它工作了吗?我可以将音频录制到一个文件中,但我不能听它,尽管它有正确的时间。嗨,我需要和你一样的音频,但我不明白你的解决方案。我有一个var audioBlob=newblob([dataview],{type:'audio/mp3'});但是您在示例中使用的“arrayBuffer”变量是让arrayBuffer
在您的示例中等于新Blob
?ArrayBufferLike
似乎缺少Blob
中的某些属性:类型为“ArrayBufferLike”的ts参数不可分配给类型为“File | Blob”的参数。类型“ArrayBuffer”不可分配给类型“File | Blob”。类型“ArrayBuffer”缺少类型“Blob”中的以下属性:大小、类型、ArrayBuffer、流、文本
此回答在创建数组缓冲区时停止。然后呢?