웹 오디오 API를 사용하여 오디오 소스 노드의 스트림을 녹음하고 있습니다. 내 코드는 다음과 같습니다 : 여기에 정의 된 바와 같이 나는 a를 BufferLoader을 사용하고416 BLOB에서 URL을 만들 때 오류가 발생합니다.
var context,
bufferLoader,
destination,
mediaRecorder,
source,
bufferList,
chunks = [],
sound_paths = [],
audioRecordings = [];
//fill in sound paths
sound_paths = ['sound.mp3', 'sound2.mp3'];
bufferLoader = new BufferLoader(
context,
sound_paths,
callback
);
//fill bufferList with bufferdata
bufferLoader.load();
destination = context.CreateMediaStreamDestination();
mediaRecorder = new MediaRecorder(destination);
mediaRecorder.ondataavailable = function(e){
chunks.push(e.data);
}
mediaRecorder.onstop = function (e) {
var blob = new Blob(chunks, {'type': 'audio/ogg; codecs=opus'});
var audio = document.createElement('audio');
audio.src = URL.createObjectURL(blob);
audioRecordings.push(audio);
chunks = [];
};
function startRecording(){
mediaRecorder.start();
source = Recorder.context.createBufferSource();
source.buffer = bufferList[0];
source.connect(Recorder.destination);
}
function stopRecording(){
mediaRecorder.stop();
}
//call startRecording(), then source.start(0) on user input
//call stopRecording(), then source.stop(0) on user input
: http://middleearmedia.com/web-audio-api-bufferloader/
이 대부분 작동하지만 때때로 나는 416 (요청 범위 안 만족할 수) 얻을를 만들기 얼룩 (blob)을 만들고 URL을 만듭니다. 이것은 웹 페이지가 지연되기 시작할 때 더 자주 발생하는 것으로 보입니다. 나는 Blob이 URL을 만들 때 정의되지 않았기 때문에 그런 것 같아요. 미디어 레코더의 온라인 이벤트를보다 안전하게 처리 할 수 있습니까? 아마도 Blob 대신 srcObjet와 MediaStream을 사용하는 것이 더 좋을까요?