2017-12-01 12 views
0

웹 오디오 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을 사용하는 것이 더 좋을까요?

답변

0

내 웹 사이트가 http://gtube.de 인 경우 (예를 들어 광고가없는 경우) recorder.js =>https://github.com/mattdiamond/Recorderjs을 사용하고 있습니다. 그것은 아주 잘 작동합니다. 아마도 당신은 컨텍스트를 기록하려고 시도해야합니다.

웹 오디오 API가있는 버퍼에 mp3.s를로드하고 동시에 재생하면 매우 효과적입니다. =>https://www.html5rocks.com/en/tutorials/webaudio/intro/ 그런데 이미 당신이하는 방법 => 위의 예에서 코드가 누락되어 기사를 읽어야했습니다. => 아마도 다음에 짧은 예제를 만들려고 할 것입니다.

미안 해요. mediaStream API에 대해 잘 모릅니다.>> 부러 졌다고 생각합니다 .-) 웹 오디오의 일부가 작동하지 않는 경우 다른 방법을 시도해보십시오. 여전히 안정적이지는 않습니다.> 특히 모질라 사람들은 그것을지지하고 있습니다.