node.js로 작업 중이며 내 오디오를 node.js 서버로 스트리밍했습니다. 이제 오디오 블롭을 작성하는 과정에서 발견했습니다.
var audioBlob = new Blob([dataview], { type: 'audio/wav' });
새 Blob에서 ReferenceError가 발생합니다. Blob이 지원되지 않는 것 같습니다. node.js fs 모듈로 저장하고 싶은 blob을 어떻게 만들 수 있습니까?
감사합니다!
node.js로 작업 중이며 내 오디오를 node.js 서버로 스트리밍했습니다. 이제 오디오 블롭을 작성하는 과정에서 발견했습니다.
var audioBlob = new Blob([dataview], { type: 'audio/wav' });
새 Blob에서 ReferenceError가 발생합니다. Blob이 지원되지 않는 것 같습니다. node.js fs 모듈로 저장하고 싶은 blob을 어떻게 만들 수 있습니까?
감사합니다!
mime
속성을 추가 할 수 있습니다 Buffer
. 그러나 MIME 유형은 이진 데이터 통신용입니다. 디스크에 저장하기에는 그리 많지 않습니다.
답변:
이 문제에 대한 해결책은 배열 버퍼와 노드 버퍼간에 변환 할 수있는 함수를 만드는 것입니다. :)
바이너리 NodeJS 버퍼를 JavaScript ArrayBuffer로 변환
최근 노드 버전에서는 다음과 같습니다.
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
고려해야 할 또 다른 솔루션은 Base64 문자열 을 사용하는 것입니다. 하여 서버에서 클라이언트로 데이터를 전송하는 것입니다.
저는 ArrayBuffer의 형태로 오디오 데이터를 수신하는 Node.js 프로젝트에서 작업 중이며 해당 데이터를 브라우저에서 보내고 재생하고 싶습니다. 내 투쟁의 대부분은 ArrayBuffer를 클라이언트에 보내거나 ArrayBuffer를 변환하고 버퍼를 보내려고 시도하는 데서 왔습니다.
저에게 간단한 해결책이 된 것은
나는 base64-arraybuffer 를 사용하여 ArrayBuffer> Base64 String 변환을 수행했습니다 (패키지없이 간단하게 수행 할 수 있음).
여기의 팁을 사용 하여 클라이언트 측에서 오디오 요소를 만들었습니다.
* 제한을 테스트하는 방법을 많이 수행하지 않았기 때문에 이것이 대용량 오디오 파일을 어떻게 처리 할 수 있을지 모르겠습니다.
제안으로 http://howtonode.org/really-simple-file-uploads 를 읽으십시오 .
제 말은 당신이 뭘하려고하는지 모르겠네요. blob을위한 모듈이 없을 수도 있지만, 디스크에 무언가를 쓰고 싶다면 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에 게시하면 디스크에 기록됩니다. 원하는 유효성 검사를 수행 할 수 있습니다.