[英]Convert a BLOB file (a music file) to .WAV in NODE.js (server-side)
我正在努力解决一个看似简单的概念。
我有一个节点服务器,它可以正确接收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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.