【问题标题】:How to retrieve a multipart from Cloudant Database and save as a wav file using Node JS如何使用 Node JS 从 Cloudant 数据库中检索多部分并保存为 wav 文件
【发布时间】: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。请帮忙
  • 该网址是否公开,以便我检查并帮助您?

标签: node.js wav cloudant


【解决方案1】:

最后,我可以从 cloudant 数据库中检索多部分。这是代码:

db_data.attachment.get(doc._id, doc.strName, function(err, body) {
  if (!err) {
   fs.writeFile('temp.wav', body, function(err) {
    if (err) {
     console.log("error while writing file!")
    }
   });
  } else {
   console.error("error retrieveing the document..", err);
  }
 });

【讨论】:

    猜你喜欢
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 2014-11-15
    • 1970-01-01
    相关资源
    最近更新 更多