簡體   English   中英

在NODE.js(服務器端)中將BLOB文件(音樂文件)轉換為.WAV

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM