有没有一种方法可以捕获浏览器'使用Javascript或任何其他网络语言的音频
Is there a way to capture a browser's audio using Javascript or any other web language?
我想制作一个简单的网站,显示交互式视觉效果,我希望其中一些是音频驱动的。我希望游客能够用自己选择的音乐来驾驭视觉效果。除了从麦克风获取音频输入之外,我很难找到其他任何东西的文档。
例如,我的网页(在选项卡1中)正在运行javascript代码X,该代码允许我处理在web浏览器的另一个选项卡中播放的音频流。这可能吗?
如果我正确理解你的问题,你想从当前选项卡之外的来源捕获音频。
W3C规范中没有这样的api,这可能是由于存在用户完整性问题。由于浏览器本质上是在执行外来代码,浏览器往往是严格的沙盒,需要征得同意才能防止任何侵犯用户隐私的行为。
如果您或用户可以访问媒体,请尝试使用Audio
和File
API。如果这两者都不够,也不足以使用您提到的输入音频捕获API,那么您将不得不转向创建浏览器扩展或完全转向另一个平台。
您可以使用WebRtc API 获取麦克风流
if (!navigator.getUserMedia)
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia || navigator.msGetUserMedia;
if (navigator.getUserMedia) {
navigator.getUserMedia({audio:true}, success, function(e) {
});
}
function success(e) {
audioContext = window.AudioContext || window.webkitAudioContext;
context = new audioContext();
// the sample rate is in context.sampleRate
audioInput = context.createMediaStreamSource(e);
var bufferSize = 2048;
recorder = context.createScriptProcessor(bufferSize, 1, 1);
recorder.onaudioprocess = function(e){
console.log ('recording');
var left = e.inputBuffer.getChannelData(0);
// stream
window.Stream.write(convertoFloat32ToInt16(left));
}
audioInput.connect(recorder)
recorder.connect(context.destination);
function convertoFloat32ToInt16(buffer) {
var l = buffer.length;
var buf = new Int16Array(l)
while (l--) {
buf[l] = buffer[l]*0xFFFF; //convert to 16 bit
}
return buf.buffer
}
如果你只喜欢音频流的可视化,你可以使用javascript插件,比如在这里输入链接描述
相关文章:
- Javascript:使用绝对路径设置img src
- Javascript使用变量设置属性
- 使用Javascript使用数组检查文本框中的值
- Javascript:使用document.write时删除子项
- Javascript 使用 document.write 编写 innerHtml 的值
- JavaScript使用字符串Reveal Triangles
- Javascript:使用用户输入搜索数组
- 使用javascript使用for循环声明变量
- 如何使用Javascript使用给定的输入创建输出表
- Javascript-使用“”将toDateStringMonth从文本字符串解析为数字字符串;如果“;vs“;开关”;
- Javascript使用+添加对象
- Jquery/Javascript使用IF/ELSE语句更改img SRC
- Javascript使用Confirm取消表单提交
- javascript使用正则表达式得到错误的结果
- 对javascript使用.html中的select id
- JavaScript-使用B.prototype=new A()继承数组
- Javascript:使用一个预先存在的对象值作为一个新对象的键
- Javascript使用本地存储,回调对象并用Json更改为一个字符串以用于填充函数
- Javascript使用JCanvaScript在画布中加载图像
- 模型中的Javascript使用列表