将声音按顺序保存为一个音频文件

时间:2015-12-28 23:04:08

标签: javascript html5-audio web-audio

让我们说我创建了一个接一个播放一个声音的程序。如果不使用第三方库,以某种方式将声音导出为wav或mp3是否可能?

我正在尝试构建一个小音序器,但在此之前,我需要知道这是否可行。

我已经完成了我的研究并找到了许多第三方图书馆,最着名的似乎是recorder.js。为了学习,我更喜欢使用纯api。

3 个答案:

答案 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。应该指出你正确的方向。

  1. julianburr/js-audiorecorder
  2. minervaproject/user-media-recorder