Я преобразую BLOB-файл в файл и сохраняю его локально, но файл можно воспроизвести только в Media Player Classic , но в строке поиска нет только звука.В то время как в другом проигрывателе он даже не воспроизводится ( vlc, Windows Media Player )
RecordAudio = event=>{
var constraints = { audio: true }
if(event==='default'){
navigator.mediaDevices.getUserMedia(constraints).then(stream=> {
audioContext = new AudioContext();
gumStream = stream;
input = audioContext.createMediaStreamSource(stream);
this.mediaRecorder = new MediaRecorder(stream)
this.mediaRecorder.start(10);
var chunk=[];
this.mediaRecorder.ondataavailable = e => {
if (e.data && e.data.size > 0) {
chunk.push(e.data);
}
this.setState({chunks:chunk});
};
}).catch(function(err) {
console.log(err);
});
}
else{
var fileName="blobfile";
this.mediaRecorder.stop();
gumStream.getAudioTracks()[0].stop();
var blob = new Blob(this.state.chunks, {type: 'audio/mp3;codec=opus'});
var formData=new FormData();
formData.append("event_name",fileName);
formData.append("file",new File([blob], fileName, {type: 'audio/mp3; codec=opus', lastModified: Date.now()})); // doesn't matter to put codec again until you change it.
formData.append("fileExtension", "mp3");
fetch('http://localhost:6020/uploadFile', {
method: "POST", // *GET, POST, PUT, DELETE, etc.
mode: "cors", // no-cors, cors, *same-origin
cache: "no-cache", // *default, no-cache, reload, force-cache, only-if-cached
redirect: "follow", // manual, *follow, error
referrer: "no-referrer", // no-referrer, *client
body: formData, // body data type must match "Content-Type" header
})
.then(response => response.json())
.then(function(data){ console.log( JSON.stringify( data ) ) });
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
const audioURL = window.URL.createObjectURL(blob);
// append videoURL to list of saved videos for rendering
const audios = this.state.audios.concat([audioURL]);
this.setState({audios});
console.log(audios);
a.href = audioURL;
a.download = "blobFile";
a.click();
window.URL.revokeObjectURL(audioURL);
}
}
else{
// error
}
}
Я загружаю и отправляю файл на сервер в остальное состояние.Но оба файла не воспроизводятся, за исключением того, что в классическом медиаплеере все еще ищется строка, в которой отсутствует в MPC.
- В этом может быть проблема с кодеком, но я попробовал pcm, также не очень хорошо работающий.
Аудиофайл прикреплен и доступен здесь: запись