WebAudioApi,频率声音动画,安卓铬v37 您所在的位置:网站首页 webaudioapi提取音频频率 WebAudioApi,频率声音动画,安卓铬v37

WebAudioApi,频率声音动画,安卓铬v37

2024-07-06 15:16| 来源: 网络整理| 查看: 265

我有困难的频率动画声音通过网络音频api上的android铬v.37,我可以听到音乐,但动画不存在。

很多实验让我最终找到了两种不同的方式来加载声音和动画。首先,我通过aduio 5元素加载声音。然后创建以音频元素为参数的MediaElementSource。将MediaElementSource连接到分析器(AudioContext.createAnalyser元素)。分析我与GainNode的连接,并最终将GainNode与AudioContext.destination连接起来。

代码:

代码语言:javascript复制var acontext = new AudioContext(); var analyser = acontext.createAnalyser(); var gainNode = acontext.createGain(); var audio = new Audio(path_to_file); var source = acontext.createMediaElementSource(temp_audio); source.connect(analyser); analyser.connect(gainNode); gainNode.connect(acontext.destination);

这种模式工作在PC-Chrome和最新的移动狩猎.也是在FireFox。

我发现的第二种方式没有什么不同之处。这里的声音读取到缓冲区,然后连接到分析器。

代码:

代码语言:javascript复制var acontext = new AudioContext(); var analyser = acontext.createAnalyser(); var gainNode = acontext.createGain(); var source = acontext.createBufferSource(); var request = new XMLHttpRequest(); request.open('GET', path, true); request.responseType = 'arraybuffer'; request.addEventListener('load', function(){ source.buffer = acontext.createBuffer(request.response, false); }, false); request.send(); source.connect(analyser); analyser.connect(gainNode); gainNode.connect(acontext.destination);

对于绘图动画,我使用画布,数据用于绘制:

代码语言:javascript复制analyser.fftSize = 1024; analyser.smoothingTimeConstant = 0.92; var dataArray = new Uint8Array(analyser.frequencyBinCount); analyser.getByteFrequencyData(dataArray); //fill dataArray from analyser for (var i = 0; i < analyser.frequencyBinCount; i++) { barHeight = dataArray[i]; // and other logic here. }

第二种方法是使用旧的色度、移动浏览器和safari。

但在安卓铬v37中,这两种方式都行不通。正如我之前所说的,第一种方式不显示动画,第二种方法只是中断错误-- acontext.createBuffer()请求3参数,而不是2。正如我在新的Web版本中所理解的,这种方法是为最新的调用类型重写的,具有不同的参数,所以我不使用它。

有什么建议可以让Android Chrome v.37在这里工作吗?



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有