如何设置MediaRecorder记录的WAV文件的持续时间

时间:2019-09-02 08:44:57

标签: javascript audio electron

我正在开发一种将音频流(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错误。有没有办法手动设置持续时间?我只想在开始和停止时获取日期并将其转换为秒,然后进行设置。

0 个答案:

没有答案