问题标签 [audiobuffer]

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 回答
412 浏览

ios - AudioUnit inputCallback 与 AudioUnitRender -> audioBufferList.mBuffers[0].mDataByteSize 之间不匹配!= inNumberFrames

我们正在使用 AudioUnits 输入回调来处理传入的缓冲区。音频单元设置主要取自

https://github.com/robovm/apple-ios-samples/blob/master/aurioTouch/Classes/AudioController.mm

我在音频回调中添加了一些健全性检查。看起来像这样

现在有时语句会assert(callbackData.audioBufferList.mBuffers[0].mDataByteSize == inNumberFrames * sizeof(float));失败,因为缓冲区不同。

有人对这种现象有解释吗?

0 投票
1 回答
420 浏览

javascript - 是否可以使用 javascript 将频率赫兹数组转换为音频缓冲区?

数组第一列是频率,第二列是播放时间。

我可以按顺序使用音频上下文播放频率代码,但我需要一种方法将这种方式转换为音频文件或 AudioBuffer。我想设计一个具有这些频率的频谱图。

0 投票
1 回答
527 浏览

web-audio-api - 如何在使用网络音频 API 播放曲目时提前 n 秒?

使用 Web Audio API,我正在尝试构建一个具有“向前跳过 15 秒”功能的 mp3 播放器。

我可以使用源缓冲区加载 mp3,并且可以开始播放。我想做这样的事情,虽然我知道 currentTime 不是可设置的属性:

一旦歌曲已经播放,你如何向前跳过 n 秒?

0 投票
0 回答
137 浏览

javascript - 在 JavaScript/Html5 中流式传输和播放通过 TCP 数据包接收的音频

我有某些TCP包含音频数据的数据包。
我是 Js 和 html5 的新手。
我写过这样的东西,它会发出嗡嗡声。TCP我想知道音频样本在数据包中的样子。

我使用wire-shark捕获了TCP数据包,数据段显示了一些字符及其ASCII值。
我相信这些字符是音频数据。假设是这样,我怎样才能将这些传递给myArrayBuffer下面的喜欢?



0 投票
1 回答
936 浏览

javascript - 将音频缓冲区放入可由音频元素播放的 blob 的最佳方法是什么?

我有一个存储为变量的 AudioBuffer,我想让它由一个音频元素播放。这是我当前无法运行的代码:

当我尝试播放 audioElement 时,出现以下错误:

Uncaught (in promise) DOMException: 该元素没有支持的来源。

有没有人对如何解决这个问题有任何想法?提前致谢!

0 投票
1 回答
117 浏览

javascript - AudioBufferSourceNode.start() 不起作用,或者至少激活但不产生任何声音,我做错了什么吗?

我的目标是在按下特定键时播放声音(我说按下键上的字母),但没有 html 音频标签,带有来自 web-Audio API 的 audioBuffers。
此处执行,作为arraySources的一项创建的audioBufferSourceNode在使用.start()函数时不显示任何声音。不知道为什么

更新:已解决 arraySources[count].connect(AudCtx.destination) 丢失..!

0 投票
1 回答
248 浏览

swift - 如何在 Swift 中从内存中播放 [Int16] 音频样本数组

尝试使用GME库为 Mac 构建游戏音乐播放器(NSF、SPC 等)。

我花了好几个小时在 SO 上测试这么多的解决方案和技巧,但似乎没有一个解决方案能很好地工作。我尝试了该AVAudioEngine/AVAudioPlayerNode/scheduleBuffer路线的许多变体,但由于它们都不起作用,我只是切换到将样本转换为 Wav 数据并从内存中播放。但是,这确实有效,从[Int16]to转换[UInt8](为了为波阵列创建数据)非常慢。至少对于更高的采样率和超过几秒钟的歌曲。下面的“清洁”代码示例。非常欢迎反馈和建议。

测试:

  1. AVAudioPlayerNode 示例(无法开始工作,例如,找不到输入设备、没有声音等)
  2. 缓冲区到 wav 数据示例(有效,但 sloooow)

0 投票
1 回答
68 浏览

swift - SDL 音频回调的 Swift 实现中的噪声和失真

我目前正在为 Mac OS 构建一个游戏音乐播放器,使用GME生成声音缓冲区和SDL用于音频播放。我以前(并且成功地)使用SDL_QueueAudio进行播放,但我需要对缓冲区处理进行更精细的控制,以确定歌曲进度、歌曲结束等。所以,这让我在SDL_AudioSpec API 中使用了 SDL_AudioCallback。

我可以听到歌曲播放,但伴随着噪音和失真(有时会根据我的尝试而回声)。

设置

打回来

0 投票
1 回答
1019 浏览

javascript - JavaScript 将音频字节数组转换为 wav 文件或有效的 AudioBuffer

我可以从 URL 访问字节数组文件(float32,big endian),我正在尝试将其转换为 WaveSurfer 可处理的东西,这需要有效的 ArrayBuffer、AudioBuffer 或 wav 文件的 URL。

我得到的最接近的方法是使用 fetch 来获取文件,并尝试将其转换为 ArrayBuffer,但是 WaveSurfer 无法识别,这表示它无法解码数据。

这是我的 JavaScript 代码:

我知道我要解码的文件是有效的音频文件,因为我可以使用以下 python 脚本将其转换为 wav 文件:

关于我能做什么的任何建议?

0 投票
0 回答
31 浏览

javascript - AudioBuffer.getChannelData 在 Safari 中输出一半麦克风的音量

我在这里设计了一个简单的体积单位仪表:https ://codesandbox.io/embed/cocky-torvalds-60k4n (这是对此的最小改编:https ://github.com/cwilso/volume-meter/ )

它在浏览器中运行良好,但由于某种原因,输入信号在 Safari 上似乎下降了一半:当我在麦克风音量最大的情况下尝试脚本时,它通常在 Chrome/Firefox 上输出 0.3-0.5 之间的最大值/Edge,在 Safari 13 上介于 0.1-0.3 之间。它似乎与我的配置无关,因为我让另一个人在他们的机器上重现了相同的行为。

据我所知,差异来自getChannelData,而 Safari 产生的值较低。

有人熟悉这个吗?它是否应该被视为一个错误,您是否知道任何解决方法来协调跨浏览器的输出?

最终我的目标是在麦克风音量太低时提供反馈,但只要getChannelData' 的输出在浏览器之间不一致,或者没有原则性的方法来重新校准 Safari 的数字,它就会不可靠