问题标签 [avaudioplayernode]

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

audiounit - 在 AVAudioEngine AVAudioPlayerNode 输出似乎不是 AVAudioUnitNode 输入

我将一个 AVAudioPlayerNode 附加到一个 AVAudioEngine,定义了一个链接到 playerNode 的文件。我附加了一个链接到我自己的 AUAudioUnit 的 AVAudioUnitNode。第一次。我将 playerNode 直接连接到 mainMixerNode,当我开始播放引擎时,我可以听到链接到播放器的音频文件。第二次。我将同一个 playerNode 与 audioUnitNode 连接,将 audioUnitNode 与 mainMixerNode 连接起来。audioUnit 处理方法只是读取输入缓冲区的数据并将它们写入输出缓冲区的数据。但我什么也听不见。音频单元的输入缓冲区的输入样本始终为 0.0。我想将 playerNode 的输出 AudioBuffer 与作为 audioUnit'kernel 处理方法的参数给出的调试进行比较。但是我可以' t 想办法监控 playerNode 的输出缓冲区。有人可以告诉我如何访问 playerNode 的输出数据吗?有谁看到我处理的方式或我必须关心的问题可能有什么问题?

0 投票
1 回答
1124 浏览

swift - 使用 AVAudioPCMBuffer 的 AVAudioPlayerNode - 不播放音频

我正在尝试从 PCMBuffer 播放音频。当我运行以下代码时,由于某种原因,没有播放音频。我没有收到任何错误。

样本audioData值:

为什么什么都没有播放?随时询问更具体的细节。

0 投票
1 回答
158 浏览

ios - AVAudioEngine 录音改变音调

AVAudioPlayerNode对于每个声音用户可以播放的声音,我都很少。每个播放器节点都连接到自己的节点AVAudioMixerNode以更改音量。所有这些混合器都连接到一个AVAudioMixerNode(我命名它soundsMixerNode),它连接到引擎的mainMixerNode. 用户可以录制这些声音,然后通过 播放结果记录AVAudioPlayer。问题是这张唱片的音调发生了变化。就像我使用音高效果一样。我只在设备上得到这个结果,模拟器效果很好。也许问题出在AVAudioSession类别或模式上?或者也许我有问题AVAudioFormat或设置?我不明白。这是我的音频图:

这是我的会话设置:

这是我的录音AVAudioFile设置:

并记录代码:

0 投票
0 回答
281 浏览

ios - AVAudioPlayerNode playAt() 不同步

我有一个不断播放的主要 AVAudioPlayerNode。当主要玩家到达某个点时,还有其他玩家被放入队列并播放。这些 AVAudioPlayerNode 应该同步到毫秒。有时一次可以开始 4-10 件。

它是如何工作的 - 我lastRenderTime在需要启动所有预定播放器时存储主要播放器,然后启动所有需要的播放器 player.start(at: lastRenderTime)

通常,它运行良好,声音之间没有任何延迟。

但是,我在这种情况下得到了一些延迟:

  1. 在旧设备上运行(iPad 2、iPhone 5 等)
  2. 仅当应用程序启动后第一次有许多播放器时(例如在 iPhone 7 上,我在应用程序运行后同时运行 8 个播放器并且我听到声音之间的不同步),但所有播放器都在同一player.start(at: lastRenderTime)时间运行。

我与自定义并发队列异步运行的所有玩家操作。

花 3 天时间尝试解决此问题。我想要任何建议。

一些代码:这是我开始主要播放器的方式 -


运行所有预定播放器的代码示例。

0 投票
0 回答
98 浏览

swift - 从数据字节流音频

我通过我的套接字连接以字节格式从服务器接收音频。

我正在尝试将它转换为 PCMFormat 来播放它。

}

但我在下线面临崩溃。

希望,这是从字节流式传输音频的正确方法。

任何帮助将不胜感激。

0 投票
1 回答
793 浏览

swift - AVAudioEngine 实时音频播放问题

我正在开发一键通功能,其中发送方可以以字节数组的形式向服务器发送音频,接收方可以通过套接字连接实时收听它。

当我尝试使用 AVAudioEngine 在接收器端播放视频时,它不起作用。

而且,我在给定线以下面临崩溃。

任何帮助将不胜感激。

0 投票
1 回答
1098 浏览

swift - 使用 Swift for MacOS 播放音频文件

我正在尝试使用 AVAudioFile、AVAudioEngine 和 AVAudioPlayerNode 简单地播放文件(在主包中或磁盘上)。

这是我正在做的事情:

我可以看到通道数,即 FrameCount。我什么都听不见。我究竟做错了什么?这是我在控制台中得到的:

0 投票
2 回答
908 浏览

ios - 用于 MIDI 播放和录音的 AVAudioEngine 同步

问题 1 我的第一个问题是关于 MIDI使用 anAVAudioPlayerNode和 an时的播放同步。AVAudioSequencer基本上我正在尝试通过 MIDI 播放一些东西,但它们需要完全同步。

我知道AVAudioPlayerNodes 有同步方法,但音序器似乎没有类似的东西。

目前我已经尝试在单独的线程上使用CAMediaTime() + delayand usleep,但它们似乎效果不佳。

问题 2我使用点击engine.inputNode来获取录音,与音乐播放分开。但是,似乎录制开始得更早。当我将录制的数据与原始回放进行比较时,差异约为 300 毫秒。我可以在 300 毫秒后开始录制,但即便如此,这也不能保证精确同步,并且可能取决于机器。

所以我的问题是,什么是确保录制在播放开始的那一刻准确开始的好方法?

0 投票
1 回答
881 浏览

swift - 播放 AVAudioPCMBuffer 的片段

我正在为 iOS 应用程序创建这个简单的录音机和编辑器界面:

记录器/编辑器界面截图

音频被记录到用于创建波形的浮点数组中。录制后,我将浮动数据复制到一个AVAudioPCMBuffer用于播放的AVAudioPlayerNode. 我可以从一开始就播放缓冲区,但我不知道如何只播放缓冲区的一部分。该scheduleSegment功能仅适用于文件。

0 投票
1 回答
442 浏览

macos - 使用 AVAudioEngine 更改某些频道的音量

我正在开发一个混合来自 VideoCard 和外部声卡的音频的 mac 应用程序。

如何使用 AVAudioEngine 独立更改每个通道(不是每个源)的音量。

假设我有一个 16 个通道交错的 AVAudioPCMBuffer,我希望通道 1 和 2 的音量为 50%,其他为 100%

我应该从 1 个具有 16 个通道的 AVAudioPCMBuffer 转换为 16 个单声道 AVAudioPCMBuffer 并为每个通道设置一个 AVPlayerNode 吗?然后改变每个 AVPlayerNode 的音量?

或者我可以保留 o 有没有办法从 AVAudioMixerNode 更改底层音频单元?

还是我应该直接使用 CoreAudio AudioUnits?