有人知道Web Audio API是否能够保存使用WebAudioContext播放的音频?
答案 0 :(得分:15)
我实际上写了一个名为RecorderJS的小工具,可能有所帮助。
答案 1 :(得分:0)
Chrome中至少有一个startRendering功能(尚未检查Safari)。我认为它正在进行一些返工,因此不包含在规范中,但可能会在稍后阶段(或不是)添加。如果您想查看当前的实现,请查看Is there a way to use the Web Audio API to sample audio faster than real-time?
上的答案答案 2 :(得分:0)
录制API http://www.w3.org/TR/mediastream-recording/有一个W3C规范,但截至目前,它仅在Firefox中实现。
客户端只有ScriptProcessorNode hack(这是Record.js所基于的)。
或者,对于某些用例,使用WebRTC将音频流式传输到服务器并使用Libjingle写入服务器端记录器可能是有意义的。
答案 3 :(得分:0)
这个库工作正常,只有网络音频api(意思是没有用户): https://github.com/higuma/web-audio-recorder-js
但我们现在可以公平地使用它: http://caniuse.com/#feat=audio-api
无论如何你说你的声音已经存在于音频文本中,所以我认为你正在寻找如何使用AudioDestinationNode,这是web音频api的最后一个节点。只要您可以通过常规的html音频播放器播放音频,您就可以在右键单击获得录音功能,就像playDataUri一样。您需要添加属性" controls"对于播放器,或者您可以使用下载属性创建特殊链接。 我对Mdn脚本进行了一些小的改进,将数据发送给玩家,它应该给你一个好主意:
var audioCtx = new AudioContext();
var source = audioCtx.createMediaElementSource(myMediaElement);
myMediaElement = document.createElement("audio");
myMediaElement.setAttribute("autoplay", true);
myMediaElement.setAttribute("src", uri);
myMediaElement.setAttribute("controls", "controls");
document.getElementById('player').appendChild(myMediaElement);
source.connect(audioCtx.destination);
AudioDestinationNode接口表示最终目的地 在给定的上下文中的音频图 - 通常是你的发言者 设备。它也可以是记录"的节点。音频数据何时 与OfflineAudioContext一起使用。
https://developer.mozilla.org/en-US/docs/Web/API/AudioDestinationNode
答案 4 :(得分:0)
现在可以在最新的浏览器中使用,它名为media recorder,您可以找到更多information here
答案 5 :(得分:0)
最简单的方法是将流创建为
var dest = audioCtx.createMediaStreamDestination();
var options = {
audioBitsPerSecond : 320000,
sampleSize: 16,
channelCount: 2,
mimeType : 'audio/ogg'
}
var mediaRecorder = new MediaRecorder(dest.stream, options);
var chunks = [];
var isrecording = "Not Recording";
function rec(){
mediaRecorder.start();// start record
dataavailable = true;
isrecording = mediaRecorder.state;
}
您可以查看我的录音机的示例 应用在这里。虽然它也是全频段多频段压缩器和5频段段落。 哦,如果您查看我的链接。最重要的是ondataavilable方法。并且另存为blob也有点领先。 如果有人想帮助我,请给我发送电子邮件给我。谢谢 目前,它仅在Firefox中有效。 MultiBand Compressor