【发布时间】:2018-08-11 11:08:17
【问题描述】:
我能够将 wav 文件作为多部分存储在 cloudant 数据库中。这是代码:
var doc = {
_id: timestmp.toString(),
name: strName
};
var attach = {
name: strName,
data: fs.readFileSync(input),
content_type: mimeType
};
try {
db_data.multipart.insert(doc, [attach], now.toString(), function (err, result) {
if(err){
console.log('Error inserting to STT data table' + err);
response.sendStatus(200);
}
else {
console.log('Inserted to db');
}
});
当我从 cloudant 数据库手动下载 wav 文件时,我可以播放该文件。我正在尝试使用 Node js 代码来做同样的事情。但是导出到我的系统的 wav 文件没有播放。这是代码:
db_data.multipart.get(doc._id, function (err, buffer) {
var inputWav = "input.wav";
if (!err) {
fs.writeFileSync(inputWav, Buffer.from(buffer), "audio/wav");
}
});
谁能帮忙?基本上,我正在尝试将从 cloudant 数据库返回的缓冲区输出转换为音频/wav 文件 mimetype。该怎么做?
【问题讨论】:
-
尝试使用npmjs.com/package/audiobuffer-to-wav npm 模块。或者你可以参考这个问题stackoverflow.com/questions/46623517/…
-
我试过了。我收到此错误:/node_modules/audiobuffer-to-wav/index.js:14 result = buffer.getChannelData(0) ^ TypeError: buffer.getChannelData is not a function at audioBufferToWav (//node_modules/audiobuffer-to-wav /index.js:14:21)
-
我被困在使用 Node JS 从 cloudant 中检索多部分。因此,我使用 REST API 来下载 wav 文件。但它没有从 https URL 下载 wav 文件。当我直接在浏览器中输入 https URL 时,它会提示我在本地保存文件。所以,网址是正确的。
-
这是我的代码: var request1 = require('request');var filestream = fs.createWriteStream("input.wav"); var authenticationHeader = "Basic " + new Buffer(user + ":" + pass).toString("base64"); request1( { url : "example.com/data/1533979044129/female", headers : { "Authorization" : authenticationHeader } }, function (error, httpResponse, body) { const statusCode = httpResponse.statusCode; httpResponse.pipe(filestream); httpResponse.on(' end', function () { console.log("文件完成"); filestream.close(); }); });它给出 0 个字节作为 input.wav。请帮忙
-
该网址是否公开,以便我检查并帮助您?