2013-02-01 69 views
33

我正在使用node.js,並將我的音頻流傳輸到我的node.js服務器。 現在我建立音頻斑點的過程中發現:Node.js不能創建Blob?

var audioBlob = new Blob([dataview], { type: 'audio/wav' }); 

那我會在新斑塊一個的ReferenceError。 看來Blob不受支持。 如何創建一個我想用node.js fs模塊保存的blob。

謝謝你們!

+2

什麼是斑點?它從何而來? – Pete

+0

http://en.wikipedia.org/wiki/Binary_large_object – zer02

+0

所有常見的瀏覽器都支持它https://developer.mozilla.org/de/docs/DOM/Blob – zer02

回答

12

解決此問題的方法是創建一個可以在陣列緩衝區和節點緩衝區之間轉換的函數。 :)

Convert a binary NodeJS Buffer to JavaScript ArrayBuffer

在最近的節點版本,它只是:

let buffer = Buffer.from(arraybuffer); 
let arraybuffer = Uint8Array.from(buffer).buffer; 
+0

你是否設法讓它工作?我可以將音頻錄製到一個文件中,但我無法聽到它,雖然它有合適的時間。 – Gabriel

+0

是的,它的工作。 – zer02

+0

你能幫我嗎?你是否在這個要點上做了這樣的事情?https://gist.github.com/anonymous/11302966 – Gabriel

0

作爲一個建議,你可能需要閱讀本:http://howtonode.org/really-simple-file-uploads

我的意思是我想我不知道你想做什麼。有可能不是斑點模塊,但如果你想只寫東西到磁盤,還有FS的模塊。這代碼將無法直接工作,但..

var fs = require('fs') 
    , express = require('express') 

app.post('/upload', function (req, res) { 
    // asynch call to write file to disk 
    fs.write("/tmp/file.mp3", req.params.body, function (err) { 
    if (err) console.log(err) 
    }); 
    res.end(); 
}); 

只需發佈一個MP3,或任何事情,上傳,並將它寫入磁盤。你可以做任何你想要的驗證。

+0

您好,我將GetUserMedia Audio的Audio Buffers流式傳輸到了我的node.js服務器,並且希望將這些陣列編碼爲WAV。 – zer02

+0

https://github.com/mattdiamond/Recorderjs – sent1nel

+0

我用過recorder.js。我甚至延長了它。問題在於創建Blob服務器而不是客戶端。 我需要知道是否有辦法在節點內部創建Blob。js,因爲我將音頻直接傳輸到node.js,並且想要在服務器上構建wav/mp3文件。 :-) – zer02