问题标签 [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 投票
0 回答
868 浏览

audio - 在不改变剪辑音高的情况下改变音频文件的速度

我创建了一个使用网络音频的音频上下文实例,并将音乐文件作为音频缓冲区加载到其中,我现在可以播放歌曲,我的问题是:有什么方法可以通过任何节点设置音频源(音频缓冲区)的速度和相应地玩?

我试过了

上面的问题是,它正在改变音频文件的音高,如何在不改变音高的情况下改变速度?

0 投票
1 回答
746 浏览

ios - 如何从 NSdata 创建 AudioBuffer(Audio)

我不知道如何将 NSdata 转换为音频缓冲区。

具有上述数据的 AVAudioPlayer 返回 nil 并出现此错误:Error = Error Domain=NSOSStatusErrorDomain Code=1954115647

0 投票
2 回答
874 浏览

objective-c - 如何转换那个 UnsafeMutablePointer> 变量到 AudioBufferList?

我的 Swift 项目中有这个 EZAudio 方法,用于从麦克风捕获音频:

但我真正需要的是让“bufferList”参数作为 AudioBufferList 类型进入,以便通过套接字发送这些音频数据包,就像我在 Objective C 中所做的那样:

如何将 UnsafeMutablePointer> 变量转换为 AudioBufferList?

0 投票
1 回答
905 浏览

javascript - 如何通过在 JavaScript 中构造 AudioBuffer 来正确播放 WAV 文件?

我正在努力播放这个 WAV 文件,它在 VLC 中播放(根据它是一个Mono,IMA WAV APDCM Audio (ms)采样的文件24000Hz16 bits per sample

我怀疑 WAV 文件本身有问题,因为当我尝试通过直接嵌入它来播放它时 <audio>播放按钮处于非活动状态……当我尝试使用 以编程方式播放它时new Audio(),我收到错误Failed to load because no supported source was found.

这是我尝试过的最简单的示例,它会产生一些声音……我尝试过的其他尝试尝试AudioContext.decodeAudioData在加载音频时使用所有扼流圈,抛出Unable to decode audio data.

这个例子产生了一些可以识别的声音,但我显然做错了什么,因为它太刺耳了——我的理解是,它的值AudioBuffer需要介于 之间,而这些则不需要。但我不知道如何规范化它们,因为许多值都在.Float32Array[-1,1]10e32

任何帮助,将不胜感激; 谢谢你!

0 投票
2 回答
1765 浏览

ios - ios核心音频:如何从AudioBuffer中获取带有交错音频的样本

我已将音频文件读入AudioBufferListwithExtAudioFileRead功能。
这是音频的 ASBD:

因此,我们得到并交错了 2 个通道的音频,每个通道
AudioBufferList初始化为 16 位有符号整数:

并读入缓冲区:

audioFileObjectis 和它的实例ExtAudioFileRef是在前面的代码中启动的,我没有在此处粘贴以节省空间。
我想要完成的是在我的渲染回调中修改音频样本。

是否可以从 UInt32 音频数据数组中获取 Sint16 左右声道样本?

0 投票
1 回答
843 浏览

ios - Swift 中的 AudioUnitRender 和 ExtAudioFileWrite 错误 -50:尝试将 MIDI 转换为音频文件

我正在尝试将 MIDI 文件转换为 Swift 中的音频文件 (.m4a)。

现在我使用MIKMIDI作为排序和播放 MIDI 文件的工具,但是它不包括将播放保存到文件中的能力。MIKMID 的创建者在此处概述了执行此操作的过程。为了尝试捕获输出并将其保存到音频文件,我按照此示例尝试将 MIKMIDI Graph 的 RemoteIO 节点替换为 Swift 中的 GeneralIO 节点。当我尝试使用 AudioUnitRender 和 ExtAudioFileWrite 将输出保存到文件时,它们都返回错误 -50 (kAudio_ParamError)。

是什么导致了错误 -50,我该如何解决它以将 MIDI(离线)渲染为 .m4a 文件?

更新:我通过将 mNumberChannels 和通道更改为 = 1 解决了 ExtAudioFileWrite 错误 -50。现在我得到了一个带有噪音的一秒音频文件。AudioUnitRender 仍然返回错误 -50。

0 投票
4 回答
9910 浏览

blob - 如何从 Blob 创建 AudioBuffer?

我有一个使用MediaRecorderapi 创建的音频文件/blob:

然后在录制完成后:

如何使用此 blob 创建一个AudioBuffer?我需要:

  • Blob对象转换为ArrayBuffer我可以使用的AudioContext.decodeAudioData一个(返回一个AudioBuffer)或
  • Blob对象转换为Float32Array,我可以将其复制到AudioBufferwithAudioBuffer.copyToChannel()

任何有关如何实现这一目标的提示都值得赞赏。干杯!

0 投票
1 回答
2270 浏览

ios - Swift 3:使用 AVCaptureAudioDataOutput 分析音频输入

我正在尝试使用 AVCaptureAudioDataOutput 来分析音频输入,如此所述。这不是我自己能弄清楚的东西,所以我正在复制这个例子,但我遇到了困难。

Swift 3 中的 Xcode 促使我进行了一些更改。我在行分配时遇到编译错误samples。Xcode 说,“不能使用类型为 '(UnsafeMutableRawPointer?)' 的参数列表调用类型 'UnsafeMutablePointer<_> 的初始化程序”</p>

这是我修改后的代码:

谁能告诉我如何修复此代码?

0 投票
3 回答
4485 浏览

c# - 如何从音频文件中获取样本的浮点数组

我正在开发一个处理音频数据的 UWP 应用程序(适用于 Windows 10)。它在开始时以样本浮点数组的形式接收样本缓冲区,其中项目从 -1f 变为 1f。早些时候,我使用了 NAudio.dll 1.8.0,它提供了所有必要的功能。使用 WaveFileReader、waveBuffer.FloatBuffer、WaveFileWriter 类。但是,当我完成此应用程序并尝试构建发布版本时,出现此错误:ILT0042:当前不支持指针类型数组:'System.Int32*[]'。

我试图解决它:

  1. https://forums.xamarin.com/discussion/73169/uwp-10-build-fail-arrays-of-pointer-types-error

有建议删除指向 .dll 的链接,但我需要它。

  1. 我尝试使用 Manage NuGet Packages 安装相同版本的 NAudio,但 WaveFileReader、WaveFileWriter 不可用。

  2. 在 NAudio 开发人员的回答(如何使用 NAudio 在 Windows 10 中存储 .wav 文件)中,我已经阅读了有关使用 AudioGraph 的信息,但我只能在实时播放中构建样本的浮点数组,但我需要获取完整的样本以正确打包音频文件上传后。在录制或播放过程中获取样本的示例: https ://docs.microsoft.com/ru-ru/windows/uwp/audio-video-camera/audio-graphs

这就是我需要帮助的原因:如何在音频文件上传后让 FloatBuffer 处理样本?例如,用于构建音频波或计算应用音频效果。

先感谢您。


  1. 我尝试使用 FileStream 和 BitConverter.ToSingle(),但是,与 NAudio 相比,我得到了不同的结果。换句话说,我仍在寻找解决方案。

0 投票
1 回答
573 浏览

javascript - 为什么将 MediaElementAudioSourceNode 用于更长的声音更合适?

完整的问题:为什么更长的声音使用 aMediaElementAudioSourceNode 而不是 anAudioBuffer更合适?

来自 MDN

这些类型的对象旨在保存小的音频片段,通常小于 45 秒。对于更长的声音,实现 MediaElementAudioSourceNode 的对象更合适。

从规范

此接口表示内存驻留的音频资产(用于一次性声音和其他短音频剪辑)。它的格式是非交错的 32 位线性浮点 PCM 值,正常范围为 [-1,1][-1,1],但值不限于此范围。它可以包含一个或多个通道。通常,预计 PCM 数据的长度会相当短(通常略少于一分钟)。对于较长的声音,例如音乐音轨,应将流式传输与音频元素和 MediaElementAudioSourceNode 一起使用。

  1. 使用MediaElementAudioSourceNodeover of an 有什么好处AudioBuffer
  2. MediaElementAudioSourceNode 短片使用 a 有什么缺点吗?