我正在使用node.js,并将音频流式传输到node.js服务器。现在,我在构建音频Blob的过程中注意到:
var audioBlob = new Blob([dataview], { type: 'audio/wav' });
我在新的Blob处收到ReferenceError。似乎不支持Blob。如何创建要使用node.js fs模块保存的Blob。
谢谢你们!
我正在使用node.js,并将音频流式传输到node.js服务器。现在,我在构建音频Blob的过程中注意到:
var audioBlob = new Blob([dataview], { type: 'audio/wav' });
我在新的Blob处收到ReferenceError。似乎不支持Blob。如何创建要使用node.js fs模块保存的Blob。
谢谢你们!
mime
属性,Buffer
因为它仍然是动态的。但是,MIME类型用于传递二进制数据。没有太多的保存到磁盘。
Answers:
解决此问题的方法是创建一个可以在数组缓冲区和节点缓冲区之间转换的函数。:)
将二进制NodeJS缓冲区转换为JavaScript ArrayBuffer
在最新的节点版本中,它只是:
let buffer = Buffer.from(arraybuffer);
let arraybuffer = Uint8Array.from(buffer).buffer;
let arraybuffer
在你的榜样等于new Blob
?
ArrayBufferLike
似乎从缺少某些属性Blob
:ts Argument of type 'ArrayBufferLike' is not assignable to parameter of type 'File | Blob'. Type 'ArrayBuffer' is not assignable to type 'File | Blob'. Type 'ArrayBuffer' is missing the following properties from type 'Blob': size, type, arrayBuffer, stream, text
要考虑的另一种解决方案是使用Base64字符串将数据从服务器传输到客户端。
我正在一个Node.js项目中,我以ArrayBuffer的形式接收音频数据,我想在浏览器中发送和播放该数据。我大部分的努力来自尝试将ArrayBuffer发送到客户端或尝试转换ArrayBuffer并发送Buffer。
最终对我来说是一个简单的解决方案是
我使用了base64-arraybuffer来执行ArrayBuffer> Base64 String转换(尽管没有包也可以很简单地完成此操作)。
我从这里开始使用技巧在客户端上创建音频元素。
*我在测试极限方面做得并不多-因此我不知道这可能如何处理大型音频文件。
作为建议,您可能需要阅读以下内容:http : //howtonode.org/really-simple-file-uploads
我的意思是我想我不知道你想做什么。可能没有用于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或其他内容发布到/ upload,它就会将其写入磁盘。您可以执行所需的任何验证。