问题标签 [audiocontext]

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 投票
1 回答
74 浏览

javascript - Javascript Reg Pack Crusher 不会粉碎 Audiocontext

我想粉碎这个 Javascript 代码:

使用这款破碎机:

http://siorki.github.io/regPack.html

它适用于许多代码,但不会破坏 AudioContext 变量。没有第一行它工作正常。

Javascript 控制台显示以下错误:

有人可以告诉我我做错了什么或推荐其他破碎机吗?

0 投票
0 回答
368 浏览

html - 使用 AudioContext 显示歌曲的整体波形

我正在尝试显示歌曲的波形,就像 SoundCloud 为每个单独的曲目所做的那样,但我遇到了一些困难。

到目前为止,这是我认为是正确的开始。

好吧,这显然只是部分的,但最终结果将是显示整个轨道,轨道的波形从开始到结束在画布的宽度上清晰地表示。

非常感谢您对此的帮助。

尊敬,

朱尔斯

0 投票
3 回答
424 浏览

javascript - 使用 AnalyserNode 进行频率截止

我正在使用 Web API 创建一个音频条可视化工具,我希望这些条只显示 ~ 40Hz 到 ~10kHz。我发现的唯一东西是频域,但这并没有为我提供我正在寻找的东西(AnalyserNode.fftSize)。有没有办法只可视化该频率?这是我的代码:

0 投票
1 回答
2139 浏览

javascript - setTimeout 返回错误并带有 Uncaught TypeError: Illegal invocation in AudioContext in Chrome

在 Chrome 中,我首先使用 AudioContext 创建一个连续的音调:

现在我想在几毫秒后停止它。所以我这样做:

这将返回错误Uncaught TypeError: Illegal invocation

但是,如果我这样做;

它工作正常。

我现在想知道为什么第一个不起作用并返回错误。这似乎是执行此操作的直接方法。

0 投票
1 回答
392 浏览

javascript - 将 MediaElementAudioSourceNode 连接到 AudioContext.destination 不起作用

这是一个显示问题的小提琴。基本上,每当调用对象的createMediaElementSource方法时AudioContext,音频元素的输出都会重新路由到返回的MediaElementAudioSourceNode. 这一切都很好,并且符合规范;但是,当我尝试将输出重新连接到扬声器(使用 的destinationAudioContext时,什么也没有发生。

我在这里遗漏了一些明显的东西吗?也许它与跨域音频文件有关?我只是在 Google 上找不到有关该主题的任何信息,也没有在specs中看到它的注释。

小提琴的代码是:

0 投票
7 回答
26519 浏览

javascript - 更改 AudioContext (getUserMedia) 的采样率

我试图通过 getUserMedia 录制 48000Hz 的录音。但没有运气。返回的音频 MediaStream 返回 44100Hz。如何将其设置为 48000Hz?

以下是我的代码片段:

startUsermedia 函数:

我尝试更改 AudioContext 的属性 sampleRate,但没有运气。

如何将采样率更改为 48000Hz?

编辑:我们现在也可以使用可以以 48000Hz 录制和导出 wav 文件的闪存解决方案

0 投票
0 回答
163 浏览

javascript - 如果从代码中删除“console.log()”,函数将停止运行

我在不同的情况下遇到过几次这个问题。

当我有console.log('something')一个函数时,一切都很完美(至少看起来很完美)。

当我注释掉console.log('something') 它仍然有效但不是每次都有效。

这是某种错误吗?前任:

console.log("text")因此,如果被删除,这将在一段时间后停止。没有console.log()线,我看不到找到原因的方法。也许还有另一种方式?

当然我可以让这条线在那里并让它输出一些“!” 或者其他的东西。但是感觉不对。就像用胶带固定轮胎一样:)

如果有帮助: object在这种情况下是AudioBufferSourceNode. 由于某种原因,它不能多次启动,因此如果要播放下一个音轨,必须重新定义它。

我寻找答案,但我失败了。所以这实际上是我第一次在论坛上询问编程。如果我表达不好,请纠正我。谢谢你的时间。

0 投票
0 回答
73 浏览

javascript - 有没有办法在浏览器中指定或至少获取录制音频格式?

我正在尝试在浏览器上录制音频,我目前正在使用 Firefox。目标是能够使用在 Emscripten 中编译的模块将音频数据编码为 Opus。我在这里使用代码作为指南https://github.com/F1LT3R/voip-js

我注意到他正在使用 Speex 库对音频进行重新采样,并且他将音频帧视为浮点数。如何在浏览器本身上设置音频格式?我可以设置音频录制,例如,48000Hz 16 位签名 PCM 数据,可以轻松编码吗?

如果没有,至少有一种方法可以获得格式吗?

0 投票
2 回答
177 浏览

firefox - Firefox 37 在尝试为 WebRTC 音频上下文添加麦克风音量控制时抛出错误

由于 firefox 37 我无法向输入(麦克风)添加音量控制,因此出现错误:

IndexSizeError:索引或大小为负数或大于允许的数量

它在 Chrome 上运行良好。

这是代码示例:

错误在这里抛出:

麦克风.连接(增益);

奇怪的是,它每晚都在 Firefox 上工作。

此错误与此 stackoverflow 类似:link

相关链接: StackOverflow 上的链接

0 投票
1 回答
329 浏览

javascript - AudioContext 振荡器不会播放超过一次

我知道你不能多次播放振荡器,所以我写了一个函数,每次都会创建一个新的:

但奇怪的是,该功能实际上只会播放一次声音。我不明白为什么会这样。我不是每次调用函数时都创建一个新的振荡器吗?

当我创建一个具有完全相同代码的函数“playFrequency2(f, t0, t1)”时,即使第一个函数播放了声音,它也会播放声音。但是当我第二次调用它时它也不会播放声音。