javascript - 在 NODE.js(服务器端)中将 BLOB 文件(音乐文件)转换为 .WAV

标签 javascript node.js html

我正在努力解决一个看似简单的概念。

我有一个 Node 服务器,它可以正确接收 POST 请求。 我正在向其发布一个 Blob(将 Blob 转换为 .wav 文件)。

我需要做什么才能将此 Blob 作为 .wav 文件保存到磁盘? 我正在使用音乐播放器播放用户上传的音乐文件,然后它应该播放歌曲。

最佳答案

您没有提供太多信息,但您使用 Express 吗?以及您希望将其存储在哪个数据库中。

你可能想要

    var express = require('express');
    var bodyParser = require('body-parser');
    var sqlite3 = require("sqlite3").verbose();
    var cors = require('cors');

    var db = new sqlite3.Database("db/database.db");
    var app = express();

    app.use(cors());
    app.use(bodyParser.json({ extended: false }));

    app.use(express.static('public'));
function toArrayBuffer(buffer) {
    var ab = new ArrayBuffer(buffer.length);
    var view = new Uint8Array(ab);
    for (var i = 0; i < buffer.length; ++i) {
        view[i] = buffer[i];
    }
    return ab;
}


  app.post("/blobs" function(req, res){
    console.log(req.body);
//You should hopefully have your blob show up...
    toArray(blob);
    db.run("INSERT INTO pics (name, blob) VALUES (?, ?)",___nameOfBlob(hopefully from req.body as well if you have a form___, __bufferBase64__, function(err){
    if(err) console.log(err);
    });
});

如果这通常不起作用,请给我们更多详细信息... 如果您想转换为 .wav 看看这个:

function encodeWAV(samples) {
var buffer = new ArrayBuffer(44 + samples.length * 2);
var view = new DataView(buffer);

writeString(view, 0, 'RIFF');
view.setUint32(4, 32 + samples.length * 2, true);
writeString(view, 8, 'WAVE');
writeString(view, 12, 'fmt ');
view.setUint32(16, 16, true);
view.setUint16(20, 1, true);
view.setUint16(22, 2, true);
view.setUint32(24, sampleRate, true);
view.setUint32(28, sampleRate * 4, true);
view.setUint16(32, 4, true);
view.setUint16(34, 16, true);
writeString(view, 36, 'data');
view.setUint32(40, samples.length * 2, true);

floatTo16BitPCM(view, 44, samples);

return view;
}
function exportWAV(type) {
var bufferL = mergeBuffers(recBuffersL, recLength);
var bufferR = mergeBuffers(recBuffersR, recLength);
var interleaved = interleave(bufferL, bufferR);
var dataview = encodeWAV(interleaved);
var audioBlob = new Blob([dataview], {
    type: type
});

this.postMessage(audioBlob);
}

关于javascript - 在 NODE.js(服务器端)中将 BLOB 文件(音乐文件)转换为 .WAV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29952214/

相关文章:

node.js - 我需要帮助了解 Mongoose

javascript - 通过 npm 安装后找不到 yarn 命令

html - 当父级不透明时,允许在嵌套元素内没有指针事件

html - 内联 block div 与什么对齐?

javascript - 无法隐藏由 javascript 创建的 div

javascript - Slick carousel - 使用 3 张幻灯片和 autoPlay=true 会导致 slider-nav 表现得像有 5 张幻灯片

javascript - 无法使用带有 webpack 和 ES6 设置的 document.getElementById ('password').addEventListener() 调用函数

node.js - 快车的路径

javascript - 如何在客户端处理多个请求/API 调用并行的 JWT 刷新 token ?

javascript - 如何在 javascript 中打印带有首选项的 html?