让我们说我创建了一个接一个播放一个声音的程序。如果不使用第三方库,以某种方式将声音导出为wav或mp3是否可能?
我正在尝试构建一个小音序器,但在此之前,我需要知道这是否可行。
我已经完成了我的研究并找到了许多第三方图书馆,最着名的似乎是recorder.js。为了学习,我更喜欢使用纯api。
答案 0 :(得分:2)
是的,这是可能的。尽管如此,在本地API中并不是这样,您必须根据从Web Audio中提取的数据自行编码文件。
因此,基本上,如果您不想使用外部依赖项,您必须实现自己的recorder.js版本。弄清楚如何查看recorder.js源代码的最佳方法。它非常清晰!
答案 1 :(得分:2)
您可以使用MediaRecorder API,不幸的是,is not widely supported yet..,但不需要任何外部库。
// creates a simple oscillator, connected to a mediaStream
var ctx = new AudioContext();
var stream = ctx.createMediaStreamDestination();
var osc = ctx.createOscillator();
osc.connect(stream);
osc.type = 'square';
osc.frequency.value = 200;
osc.start();
// pass the stream of our stream destination Node
var rec = new MediaRecorder(stream.stream);
// once it's finished recording
rec.ondataavailable = function(e) {
var audioURL = window.URL.createObjectURL(e.data);
audio.src = audioURL;
audio.play();
};
// start the recorder
rec.start()
btn.onclick = function(){rec.stop();};
<button id="btn"> stop the recording </button>
<audio id="audio" controls></audio>
答案 2 :(得分:0)
这些可以使用HTML 5用户媒体API完成。 Here is a intro from Eric Bidelman
由于这个问题不是关于代码中的特定问题,因此它太宽泛而无法回答。所以我在github上包含一些项目的链接,我认为这些项目很容易理解,并且使用标准的API代替flash。应该指出你正确的方向。