2016-12-06 19 views

답변

2

정말로 recorder.js를 사용하고 싶다면 입니다. streamNode.stream에서 얻을 수있는 MediaStream으로 직접 피드하는 방법이 있습니다.
이 lib의 source code을 빨리 읽는다면 AudioContext 소스 노드 만 받아 들일 수 있습니다. 어쨌든 line 38recorder.js 파일을 주석 처리해야합니다. 저자
그리고 실제로 그것이에서

this.node.connect(this.context.destination); //this should not be necessary 

코멘트. latests 브라우저에서 사용할 수있는 공식 MediaRecorder API를 사용하여, (가 OGG 대신 WAV로 저장됩니다 것을 제외)


그렇지 않으면, 당신은 또한 그것을 바닐라 스타일을 달성 할 수있다.

주 키는 MediaStreamDestination이며 AudioContext의 destination에 연결할 필요가 없습니다.

var audio = new Audio(); 
 
audio.crossOrigin = 'anonymous'; 
 
audio.src = 'https://dl.dropboxusercontent.com/s/agepbh2agnduknz/camera.mp3'; 
 
audio.onloadedmetadata = startRecording; 
 

 
var aCtx = new AudioContext(); 
 
var sourceNode = aCtx.createMediaElementSource(audio); 
 
var streamNode = aCtx.createMediaStreamDestination(); 
 
sourceNode.connect(streamNode); 
 

 
function startRecording() { 
 
    var recorder = new MediaRecorder(streamNode.stream), 
 
    chunks = []; 
 
    recorder.ondataavailable = function(e) { 
 
    chunks.push(e.data); 
 
    } 
 
    recorder.onstop = function() { 
 
    var blob = new Blob(chunks); 
 
    var url = URL.createObjectURL(blob); 
 
    var a = new Audio(url); 
 
    a.controls = true; 
 
    document.body.appendChild(a); 
 
    } 
 
    audio.onended = function() { 
 
    recorder.stop(); 
 
    }; 
 
    audio.play(); 
 
    recorder.start(); 
 
}