嗨,我是一个初学者,所以我没有太多关于javascript的知识,所以请帮助我解决我的问题。我在保存音频输入时遇到问题。保存到磁盘上的音频以某种方式损坏,并且不是正确的(.mp3/.wav)文件。
下面是我的javascript代码
function saveBlob(blob, fileName) {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
var url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
}
function startRecording(){
var device = navigator.mediaDevices.getUserMedia({audio:true});
var items = [];
device.then( stream => {
var recorder = new MediaRecorder(stream);
recorder.ondataavailable = e => {
items.push(e.data);
if(recorder.state == "inactive")
{
var blob = new Blob(items, {type: 'audio/wav'});
alert(blob.type);
saveBlob(blob, 'myRecording.wav');
}
}
recorder.start();
setTimeout(()=>{
recorder.stop();
}, 4000);
});
发布于 2020-11-23 20:31:55
我认为问题在于你用错误的mimeType保存了文件。据我所知,目前还没有可以开箱即用录制WAV文件的浏览器。
一种快速修复方法是更改创建文件的部分。
var blob = new Blob(items, {type: recorder.mimeType});
alert(blob.type);
saveBlob(blob, `myRecording.wav${blob.type.split('/')[1].split(';')[0]}`);
或者你可以使用像extendable-media-recorder这样的软件包,它允许直接录制WAV文件。
https://stackoverflow.com/questions/64964237
复制相似问题