问题标签 [javascript-audio-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
497 浏览

javascript - 如何结合 SourceNode 和 Firefox 设置 HTMLAudioElement 的 playBackRate?

我正在尝试使用 HTMLAudioElement 和 AudioSourceNode 测试播放音频。对于以后的应用程序,我需要两个功能:

  1. 在播放速率更改后必须保留音高。
  2. 音量需要更改为大于 1 的值。

因为功能 2 我添加了使用 AudioSourceNode 和 GainNode 的解决方法。

我需要在后面的应用程序中将音频文件作为 ArrayBuffer,这就是我之前添加文件读取部分的原因。

问题:

该代码适用于 Chrome 和 Opera,但不适用于 Firefox。playBackRate 设置为2,但音频信号的playbackRate 没有改变。为什么会这样,我该如何解决?

0 投票
1 回答
521 浏览

javascript - 将立体声音频文件拆分为每个通道的 AudioNodes

如何将立体声音频文件(我目前正在使用 WAV,但我也对如何为 MP3 执行此操作感兴趣,如果不同的话)分成左右声道以输入两个单独的快速傅立叶变换(FFT)来自 P5.sound.js 库。

我已经在代码中写下了我认为我需要在下面做的事情,但是我无法通过谷歌搜索找到任何人这样做的例子,而且我所有的外行人的尝试都没有结果。

我将在下面分享我所拥有的,但老实说,这并不多。有问题的所有内容都将进入我已记下的设置功能:

0 投票
0 回答
133 浏览

javascript - 切换到新音频源时音频上下文中断

我正在使用 chrome,并且我有一个 HTML 音频元素连接到这样的分析器:

完成后,我调用一个重置方法,该方法传入此处声明的四个变量,然后尝试休息/重新初始化,以便可以将它们用于从同一 api/source 传入的下一个文件:

但它似乎没有正确断开连接,因为我收到了这个错误:

这是HTML:

和 python Flask API:

0 投票
0 回答
26 浏览

javascript - 为什么用 JavaScript 为我的动画录制音频只能工作一次?

我在 vanilla 客户端 JavaScript 中制作了一个小绘图动画器,人们可以在画布上绘图,将帧添加到数组中,然后为它们设置动画。然后我决定我希望人们能够在他们的视频中添加音频。经过很多不同的网站和教程(因为没有什么是我想要的,所以我不得不即兴创作),我最终得到了这个:

当它起作用时我真的很兴奋,因为正如我所说,我找不到任何人在没有图书馆的情况下完全做到这一点。所以当然,因为我想玩我的新玩具,而且只是为了更加确定它确实有效,所以我又做了一次。我的浏览器告诉我我正在录制,就像第一个视频一样,但随后生成的视频就像我实现音频之前的视频一样静音。我重新加载了页面,它又可以工作了,但只工作了一次。我想知道是不是我不小心切换了是否添加了曲目,所以我又试了几次。第三次或第四次也没有用,只有一次。这段代码中是否有一些不能多次工作的东西?

0 投票
0 回答
24 浏览

onclick - I want to make the image play a sound when clicked but only the image is displayed. Very new to coding so I'm unsure what else is needed

This is my code so far, I mostly followed a tutorial using my own saved audio file and an image collected online.

0 投票
0 回答
23 浏览

javascript - audio.play() 承诺有时无法解决

我有一个问题,有时当我疯狂地点击播放按钮几次时,promise 既没有解决,也没有调用 catch 方法。即我根本没有从承诺中得到任何反馈。前几次点击总是有效,但后一次似乎卡住了。

我的代码如下所示:

0 投票
0 回答
38 浏览

javascript - 打印窗口停止自动播放声音

一旦我打开打印窗口window.print()并在单击取消后返回,自动播放声音就会停止。此问题仅在 Chrome 浏览器中发生,而在 Firefox 中运行正常。当我单击打印窗口时,我也没有看到任何错误/中断。

有人可以解释为什么在 Chrome 中会发生这种情况以及解决方法是什么?


我找到了这种行为背后的原因。window.print()是一个阻塞函数,它会阻塞 Chrome 中的所有线程,但 Firefox 并非如此。

在这里转载了这个问题:https ://jsfiddle.net/Jatin46/yf0jt8ch/5/

我们可以从上面的例子中看到,时间在 Chrome 中停止了,但它在 Firefox 中运行,因为 Chrome 阻止了一切。

现在,我想知道是否有任何解决方法可以解除对后台线程的阻塞?

0 投票
0 回答
73 浏览

javascript - 如何在 javascript blob 中定义文档?

我想在 blob 中创建一个音频对象,但我做不到。

如果我设置 Blob 类型text/javascript,则会出现错误Uncaught ReferenceError: document is not defined

如果我设置 Blob 类型text/html得到错误Uncaught DOMException: The user aborted a request

我该如何解决这个错误?

0 投票
0 回答
35 浏览

web-audio-api - Web Audio API 麦克风均衡器

有谁知道是否可以在启用 html5 的网页中向实时麦克风输入添加 EQ/效果过滤?

需要说明的是,我不是在谈论调整在 HTMl5 播放器中播放的预先录制的 wav/mp3 的声音,其中有很多,我说的是在捕获流时实时调整麦克风特性选择的麦克风源。

有没有人设法做到这一点?

谢谢你。

0 投票
1 回答
14 浏览

javascript - 如何捕获由无法播放的文件引起的音频 DOMException?

如果我尝试播放一个不存在的音频文件(例如,该文件尚未下载),如下所示:

我得到:

很好,但是我怎样才能发现这个错误呢?如果我尝试/捕获,会发生以下情况:

因此,使用 try/catch 我永远不会到达 catch 块,只有在调用 play 方法时出现相同的未处理错误消息。

如果我尝试使用 Promise,我会得到:

同样,错误没有被捕获,类似于上面。

谁能告诉我如何在此错误输出到控制台之前捕获/处理此错误?

我知道我可以使用 mediareadyState属性,但这在这种情况下无济于事,因为我正在尝试解决一个 Safari 问题,即在用户启动每个音频文件播放方法之前,readyState 不会显示就绪,这是不切实际的,所以我不能在这里使用它。

任何帮助表示赞赏!