问题标签 [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.
javascript - 如何结合 SourceNode 和 Firefox 设置 HTMLAudioElement 的 playBackRate?
我正在尝试使用 HTMLAudioElement 和 AudioSourceNode 测试播放音频。对于以后的应用程序,我需要两个功能:
- 在播放速率更改后必须保留音高。
- 音量需要更改为大于 1 的值。
因为功能 2 我添加了使用 AudioSourceNode 和 GainNode 的解决方法。
我需要在后面的应用程序中将音频文件作为 ArrayBuffer,这就是我之前添加文件读取部分的原因。
问题:
该代码适用于 Chrome 和 Opera,但不适用于 Firefox。playBackRate 设置为2,但音频信号的playbackRate 没有改变。为什么会这样,我该如何解决?
javascript - 将立体声音频文件拆分为每个通道的 AudioNodes
如何将立体声音频文件(我目前正在使用 WAV,但我也对如何为 MP3 执行此操作感兴趣,如果不同的话)分成左右声道以输入两个单独的快速傅立叶变换(FFT)来自 P5.sound.js 库。
我已经在代码中写下了我认为我需要在下面做的事情,但是我无法通过谷歌搜索找到任何人这样做的例子,而且我所有的外行人的尝试都没有结果。
我将在下面分享我所拥有的,但老实说,这并不多。有问题的所有内容都将进入我已记下的设置功能:
javascript - 切换到新音频源时音频上下文中断
我正在使用 chrome,并且我有一个 HTML 音频元素连接到这样的分析器:
完成后,我调用一个重置方法,该方法传入此处声明的四个变量,然后尝试休息/重新初始化,以便可以将它们用于从同一 api/source 传入的下一个文件:
但它似乎没有正确断开连接,因为我收到了这个错误:
这是HTML:
和 python Flask API:
javascript - 为什么用 JavaScript 为我的动画录制音频只能工作一次?
我在 vanilla 客户端 JavaScript 中制作了一个小绘图动画器,人们可以在画布上绘图,将帧添加到数组中,然后为它们设置动画。然后我决定我希望人们能够在他们的视频中添加音频。经过很多不同的网站和教程(因为没有什么是我想要的,所以我不得不即兴创作),我最终得到了这个:
当它起作用时我真的很兴奋,因为正如我所说,我找不到任何人在没有图书馆的情况下完全做到这一点。所以当然,因为我想玩我的新玩具,而且只是为了更加确定它确实有效,所以我又做了一次。我的浏览器告诉我我正在录制,就像第一个视频一样,但随后生成的视频就像我实现音频之前的视频一样静音。我重新加载了页面,它又可以工作了,但只工作了一次。我想知道是不是我不小心切换了是否添加了曲目,所以我又试了几次。第三次或第四次也没有用,只有一次。这段代码中是否有一些不能多次工作的东西?
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.
javascript - audio.play() 承诺有时无法解决
我有一个问题,有时当我疯狂地点击播放按钮几次时,promise 既没有解决,也没有调用 catch 方法。即我根本没有从承诺中得到任何反馈。前几次点击总是有效,但后一次似乎卡住了。
我的代码如下所示:
javascript - 打印窗口停止自动播放声音
一旦我打开打印窗口window.print()
并在单击取消后返回,自动播放声音就会停止。此问题仅在 Chrome 浏览器中发生,而在 Firefox 中运行正常。当我单击打印窗口时,我也没有看到任何错误/中断。
有人可以解释为什么在 Chrome 中会发生这种情况以及解决方法是什么?
我找到了这种行为背后的原因。window.print()
是一个阻塞函数,它会阻塞 Chrome 中的所有线程,但 Firefox 并非如此。
在这里转载了这个问题:https ://jsfiddle.net/Jatin46/yf0jt8ch/5/
我们可以从上面的例子中看到,时间在 Chrome 中停止了,但它在 Firefox 中运行,因为 Chrome 阻止了一切。
现在,我想知道是否有任何解决方法可以解除对后台线程的阻塞?
javascript - 如何在 javascript blob 中定义文档?
我想在 blob 中创建一个音频对象,但我做不到。
如果我设置 Blob 类型text/javascript
,则会出现错误Uncaught ReferenceError: document is not defined
如果我设置 Blob 类型text/html
得到错误Uncaught DOMException: The user aborted a request
我该如何解决这个错误?
web-audio-api - Web Audio API 麦克风均衡器
有谁知道是否可以在启用 html5 的网页中向实时麦克风输入添加 EQ/效果过滤?
需要说明的是,我不是在谈论调整在 HTMl5 播放器中播放的预先录制的 wav/mp3 的声音,其中有很多,我说的是在捕获流时实时调整麦克风特性选择的麦克风源。
有没有人设法做到这一点?
谢谢你。
javascript - 如何捕获由无法播放的文件引起的音频 DOMException?
如果我尝试播放一个不存在的音频文件(例如,该文件尚未下载),如下所示:
我得到:
很好,但是我怎样才能发现这个错误呢?如果我尝试/捕获,会发生以下情况:
因此,使用 try/catch 我永远不会到达 catch 块,只有在调用 play 方法时出现相同的未处理错误消息。
如果我尝试使用 Promise,我会得到:
同样,错误没有被捕获,类似于上面。
谁能告诉我如何在此错误输出到控制台之前捕获/处理此错误?
我知道我可以使用 mediareadyState
属性,但这在这种情况下无济于事,因为我正在尝试解决一个 Safari 问题,即在用户启动每个音频文件播放方法之前,readyState 不会显示就绪,这是不切实际的,所以我不能在这里使用它。
任何帮助表示赞赏!