Javascript 从<;将音频数据加载到AudioBufferSourceNode;音频/>;元素通过createMediaElementSource?

Javascript 从<;将音频数据加载到AudioBufferSourceNode;音频/>;元素通过createMediaElementSource?,javascript,html,html5-audio,web-audio-api,Javascript,Html,Html5 Audio,Web Audio Api,可以从加载音频文件吗 从音频元素加载缓冲区内容似乎是可行的,但: 或者甚至可以直接使用-元素的缓冲区作为源节点吗?这是可能的。见我的帖子。这里还有一个代码片段和示例。有一些未解决的bug,但是将加载到Web音频API中应该可以正常工作 // Create an <audio> element dynamically. var audio = new Audio(); audio.src = 'myfile.mp3'; audio.controls = true; audio.aut

可以从
加载音频文件吗

从音频元素加载缓冲区内容似乎是可行的,但:


或者甚至可以直接使用
-元素的缓冲区作为源节点吗?

这是可能的。见我的帖子。这里还有一个代码片段和示例。有一些未解决的bug,但是将
加载到Web音频API中应该可以正常工作

// Create an <audio> element dynamically.
var audio = new Audio();
audio.src = 'myfile.mp3';
audio.controls = true;
audio.autoplay = true;
document.body.appendChild(audio);

var context = new webkitAudioContext();
var analyser = context.createAnalyser();

// Wait for window.onload to fire. See crbug.com/112368
window.addEventListener('load', function(e) {
  // Our <audio> element will be the audio source.
  var source = context.createMediaElementSource(audio);
  source.connect(analyser);
  analyser.connect(context.destination);

  // ...call requestAnimationFrame() and render the analyser's output to canvas.
}, false);
//动态创建元素。
var audio=新音频();
audio.src='myfile.mp3';
audio.controls=true;
audio.autoplay=true;
文件.正文.附件(音频);
var context=新的webkitAudioContext();
var analyzer=context.createanalyzer();
//等待window.onload启动。见crbug.com/112368
window.addEventListener('load',函数(e){
//我们的元素将是音频源。
var source=context.createMediaElementSource(音频);
源。连接(分析仪);
分析器.连接(上下文.目的地);
//…调用requestAnimationFrame()并将分析器的输出渲染到画布。
},假);

似乎无法从MediaElementSourceNode提取音频缓冲区


欢迎任何证明我错了的回复

我不确定您是否找到了更好的解决方案,我还查看了您发布的W3C链接:

但为了让它真正起作用,你必须使用。我还没有尝试过这个,但基本上你把源节点(一个音频元素)连接到一个脚本处理器,如果你不需要它,甚至不输出音频。在
onaudioprocess
回调中,您可以直接访问音频缓冲区数据(当然是以指定大小的块为单位)。上面的链接中有一些例子


此外,我认为您可以通过某种方式调整播放速度,以便更快地获得更多缓冲区阵列。

是的,但我想知道是否有可能从MediaElementSource获取缓冲区,将其用作bufferSourceNode(具有noteOn、noteOff、noteGrain等)中的缓冲区?为什么要浪费+100呢。。。那你就来了:)