#javascript #audio #html5-audio
#javascript #Аудио #html5-аудио
Вопрос:
Привет, я новичок, поэтому у меня мало знаний о 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);
});
Ответ №1:
Я думаю, проблема в том, что вы сохраняете файл с неправильным типом 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 напрямую.