0
在閱讀關於RecorderJs的一些信息時,我問自己是否可以錄製聲音而不在揚聲器中發出任何聲音,全部在背景中,有人知道這是否可能?因爲我在Recorderjs
存儲庫中沒有看到類似的東西。它可以讓RecorderJs處理文件的記錄而不會在揚聲器中發出任何聲音嗎?
在閱讀關於RecorderJs的一些信息時,我問自己是否可以錄製聲音而不在揚聲器中發出任何聲音,全部在背景中,有人知道這是否可能?因爲我在Recorderjs
存儲庫中沒有看到類似的東西。它可以讓RecorderJs處理文件的記錄而不會在揚聲器中發出任何聲音嗎?
如果你真的想使用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();
}