2016-12-06 85 views

回答

2

如果你真的想使用recorder.js,我想有一種方法可以直接用MediaStream來提供它,你可以從streamNode.stream得到。
快速閱讀本LIB的source code,似乎它只接受AudioContext源節點,不是直接流了,反正你只需要發表意見line 38 recorder.js文件。從筆者
而就是

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

評論。


否則,你也可以實現它香草風格(只是它會保存爲OGG,而不是WAV),通過官方MediaRecorder API,在latests瀏覽器。

主鍵是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(); 
 
}

相關問題