node.jsを使用していて、オーディオをnode.jsサーバーにストリーミングしました。オーディオブロブを構築する過程で、次のことに気づきました。
var audioBlob = new Blob([dataview], { type: 'audio/wav' });
新しいBlobでReferenceErrorが発生すること。Blobはサポートされていないようです。node.jsfsモジュールで保存したいblobを作成するにはどうすればよいですか。
みんなありがとう!
node.jsを使用していて、オーディオをnode.jsサーバーにストリーミングしました。オーディオブロブを構築する過程で、次のことに気づきました。
var audioBlob = new Blob([dataview], { type: 'audio/wav' });
新しいBlobでReferenceErrorが発生すること。Blobはサポートされていないようです。node.jsfsモジュールで保存したいblobを作成するにはどうすればよいですか。
みんなありがとう!
mime
プロパティはBuffer
まだ動的であるため、いつでもプロパティを追加できます。ただし、MIMEタイプはバイナリデータを通信するためのものです。ディスクに保存するのはそれほど多くありません。
回答:
この問題の解決策は、配列バッファーとノードバッファーの間で変換できる関数を作成することです。:)
バイナリNodeJSバッファーをJavaScriptArrayBufferに変換します
最近のノードバージョンでは、次のようになっています。
let buffer = Buffer.from(arraybuffer);
let arraybuffer = Uint8Array.from(buffer).buffer;
let arraybuffer
あなたの例ではnew Blob
?
ArrayBufferLike
以下から特定のプロパティが欠落しているようBlob
です:ts Argument of type 'ArrayBufferLike' is not assignable to parameter of type 'File | Blob'. Type 'ArrayBuffer' is not assignable to type 'File | Blob'. Type 'ArrayBuffer' is missing the following properties from type 'Blob': size, type, arrayBuffer, stream, text
考慮すべきもう1つの解決策は、Base64文字列を使用することです。してサーバーからクライアントにデータを転送することです。
ArrayBufferの形式でオーディオデータを受信するNode.jsプロジェクトに取り組んでおり、そのデータをブラウザーで送信して再生したいと考えています。私の苦労のほとんどは、ArrayBufferをクライアントに送信しようとしたり、ArrayBufferを変換してBufferを送信しようとしたりしたことによるものです。
私にとって簡単な解決策になったのは、
base64-arraybufferを使用しましたArrayBuffer> Base64で文字列変換を(ただし、パッケージなしでこれを行うには簡単である)を実行します。
ここからヒントを使用しましたからのして、クライアント側でオーディオ要素を作成しました。
*制限をテストする方法はあまり行っていないので、これが大きなオーディオファイルをどのように処理するかわかりません。
提案として、これを読むことをお勧めします: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または実際に何かを/ uploadに投稿するだけで、ディスクに書き込まれます。必要な検証を行うことができます。