2016-12-06 21 views

答えて

2

本当にrecorder.jsを使用したい場合、私はstreamNode.streamから入手できるMediaStreamで直接フィードする方法があると思います。
すぐにこのlibのsource codeを読んで、AudioContextのソースノードだけを受け入れ、直接ストリームではないようです。とにかくline 38のレコーダー.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(); 
 
}