嗨,我正在使用tone.js 使用我的麦克风录制音频,然后下载音频。
这是我的代码;
function test() {
var mic, recorder;
recorder = new Tone.Recorder();
mic = new Tone.UserMedia();
recorder = new Tone.Recorder();
mic.connect(recorder);
mic.open();
recorder.start();
setTimeout(async () => {
// the recorded audio is returned as a blob
const recording = await recorder.stop();
mic.close();
recording.date = Date.now();
recording.name = `${Date.now()}.webm`;
recording.type = "audio/webm";
recording.codecs = "opus";
recording.length = "120";
// Create Object URL
var blobUrl = URL.createObjectURL(recording);
//instance.publishState("audio_blob", blobUrl);
const anchor = document.createElement("a");
anchor.download = `${Date.now()}.webm`;
anchor.href = blobUrl;
anchor.click();
}, 4000);
}
这是我从中获得此代码参考的链接。 记录器 - UserMedia API
问题
现在当我播放下载的音频文件时,它不显示音频长度。我尝试使用将长度属性添加到音频 blob,recording.length = "120";
但它仍然没有将长度添加到音频文件。我需要知道如何为我的音频文件添加长度。我应该使用哪种编解码器和格式。当我尝试使用 mp3 格式时,下载的文件已损坏。这是为什么 ?
您可以使用 codepen 来测试 API。它与我的代码有点不同,但概念是相同的。CodePen 示例