我正在开发一种将音频流(blob)发送到服务器的软件。我还希望可以同时记录此Blob流。实际上,一切正常,我可以将文件记录和导出为WAV文件,但是没有持续时间,因此我无法快进或快退。
该软件是在Electron with Angular中开发的。
public recordStream(): void {
this._mediaRecorder.ondataavailable = (blob) => {
this.blobs.push(blob.data);
console.log('Blob Data: ', blob.data);
};
this._mediaRecorder.start(1000);
console.log('streaming started');
}
public stopRecording(path, name) {
this._mediaRecorder.stop();
const that = this;
this.toArrayBuffer(new Blob(this.blobs, {
type: 'audio/wav'
}), function(ab) {
const buffer = that.toBuffer(ab);
const date = new Date();
const file = path + '/' + date + '-' + name + '.wav';
console.log(buffer);
fs.writeFile(file, buffer, function(err) {
if (err) {
console.error('Failed to save: ' + err);
} else {
console.log('Saved file: ' + file);
}
});
});
}
toArrayBuffer(blob, cb) {
const fileReader = new FileReader();
fileReader.onload = function() {
const arrayBuffer = this.result;
cb(arrayBuffer);
};
fileReader.readAsArrayBuffer(blob);
}
toBuffer(ab) {
const buffer = new Buffer(ab.byteLength);
const arr = new Uint8Array(ab);
for (let i = 0; i < arr.byteLength; i++) {
buffer[i] = arr[i];
}
return buffer;
}
我发现了一些帖子,这是一个Chromium错误。有没有办法手动设置持续时间?我只想在开始和停止时获取日期并将其转换为秒,然后进行设置。