问题标签 [avaudioengine]
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.
ios - 使用 AVAudioEngine 录制麦克风和音效
我正在使用 AVAudioEngine 将来自麦克风的输入以及各种音效录制到单个文件中。录制时,声音通过扬声器通过引擎的 outputNode 播放。但是,这会给使用耳机录音的用户带来奇怪的效果,因为他们可以听到通过扬声器/耳机播放的自己的声音。因此,我只希望通过扬声器输出声音文件的声音,而不是来自麦克风的声音。
但是,我还没有找到使用 AVAudioEngine 实现此目的的方法。我最近的尝试涉及将声音文件节点连接到主混音器,并使用混音器的 outputNode 播放它们,然后将麦克风连接到第二个混音器。然后 mainMixer 将它的输出(声音文件中的音频)发送到这个混音器,我在它上面安装了一个水龙头,用于将音频写入我的文件。
但是,混音器节点只有一个输出,这意味着根本没有声音通过扬声器播放,因为 mainMixer 已更改为将其输出路由到第二个混音器而不是 outputNode。
这是我的引擎布局:
我该如何解决我的问题?有任何想法吗?
更新:
我现在使用 AVAudioConnectionPoint 来拆分 mainMixer 的输出。但是,播放(和录制)的声音文件声音失真,带有大量噼啪声和噪音。这只发生在我在辅助混音器上安装水龙头以写入输出文件时。有没有其他人经历过这个?
ios - iOS 9 检测静音模式
我一直在寻找很长一段时间,在这里发布作为放弃前的最后尝试。我想检测我当前是否处于静音模式。
我找到了一种解决方法(播放假声音并检查完成),但只有在我不处于AVAudioSessionCategoryPlayAndRecord
模式时才能正常工作。这正是在一个屏幕上,我可以在其中录制我想要实现的音频和视频,以便知道我是否应该播放 UI 声音。
总而言之,我试图找到一种在AVAudioSessionCategoryPlayAndRecord
模式下检测静音模式的方法。
ios - 在 AUAudioUnit v3 上使用主机上的 AUScheduleParameterBlock
我是新的 AUAudioUnits,并试图了解如何使用 v3 API。我正在尝试在kAudioUnitSubType_MultiChannelMixer
AUAudioUnit 上安排参数更改,以便我可以随着时间的推移增加增益变化。我可以直接使用滑块设置增益,并且更改会立即生效,如下所示:
但是当我尝试scheduleParameterBlock
通过将其添加到上面的 AudioPlayerClass 来执行此操作时,我希望增益在 10 秒内从 1 上升到 0,但没有变化:
我在苹果示例中看到它的示例包括这样的代码(没有 dispatch_async 部分):
当我运行此程序并使用滑块更改增益参数时,该块将运行,param
并value
以正确的外观值打印到控制台,但实际音频中的增益没有改变。我看到的这些示例也在自定义 AUAudioUnits 上,其中实现者可以直接访问 dspKernel 函数,所以我可能会遗漏一些重要的东西。另一种选择是我必须计算一系列斜坡值,然后直接为每个值设置增益参数,但既然scheduleParameterBlock
存在似乎我应该能够使用它。任何帮助都会很棒。谢谢
swift - Swift 中的 Apple Music 和 AVAudioEngine
我们如何使用AVAudioPlayerNode
/访问 Apple Music 库中的歌曲AVAudioEngine
进行播放和处理?
我在苹果论坛上问过这个问题。
ios - 在 swift 中使用 CocoaAsyncSocket 通过 UDP 流式传输音频
我在 Swift 中通过 UDP 通过 CocoaAsyncSocket 发送音频时遇到问题。
首先我运行下面的代码开始监听 4444 UDP 端口。
之后,我在 iPad2 中运行我的应用程序并按下连接。
任何想法?
ios - 在混音器节点上安装水龙头并转换采样率
我正在尝试从输入节点录制音频并将其发送到混音器以将音频转换为要写入磁盘的较低采样率。
我的音频文件是这样创建的:
然后对于音频引擎,我首先将输入节点连接到我的混音器节点,连接格式与file.processingFormat
. 哪个崩溃异常
所需条件为假:format.sampleRate == hwFormat.sampleRate
之后,我将输入节点连接到连接格式为的inputNode.outputFormatForBus(0)
混合器节点,然后将该混合器节点连接到连接格式为的第二个混合器节点file.processingFormat
。这不会崩溃,但是当我在第二个混音器上安装水龙头时,永远不会调用回调。我不确定后端处理是否需要很长时间,或者是否有问题。
avaudioengine - 使用 AVAudioEngine 淡入/淡出
我的应用程序动态地添加和删除节点馈送mainMixerNode
. 发生这种情况时,我会听到咔哒声或爆音,因为音量没有减弱。
建立连接时如何实现平滑过渡?我需要在我的 AudioUnit 中自己实现淡入淡出,还是 AVAudioEngine 可以更优雅地处理它?
ios - AVAudioFile 无法从文档目录中读取文件
这无法读取音频文件,它返回 audioFile nil。当我从 NSBundle 传递 url 时,对于相同的代码
它工作正常,任何建议。谢谢
ios - ios 内置麦克风录音只有一个声道声音
我正在使用 AVAudioEngine 来捕获用户的声音并对其应用一些效果。使用耳机麦克风录制时,一切顺利。但是用手机内置mic录音,再通过耳机播放声音时,只有左侧耳塞有声音,看来内置mic只有单声道输入。那么我该如何解决这个问题呢?这是我的一些代码:
audiounit - AVAudioUnit (OS X) 渲染块仅针对特定采样率调用
我无法让 AVAudioEngine (OS X) 在所有采样率下都能正常播放。
这是我建立连接的代码:
在我的音频接口上,为 44.1、48 和 176.4kHz 调用了渲染回调。96 和 192 kHz 不需要它。在内置音频上,为 44.1、48、88 而不是 96 调用回调。
我的 AUallocateRenderResourcesAndReturnError
被要求使用 96kHz。不返回任何错误。
这是我的 AU 的 init 方法,主要是从 Apple 的 AUv3 演示中剪切和粘贴:
为了简单起见,我在启动应用程序之前设置了采样率。
我不知道从哪里开始追踪这个。
更新
这是一个重现我遇到的问题的小项目:
在某些采样率下,您会从输入中提取错误。
在我以 96kHz 运行的内置音频上,渲染块被调用,交替的帧数为 511 和 513,错误分别为 -10863 ( kAudioUnitErr_CannotDoInCurrentContext
) 和 -10874 ( kAudioUnitErr_TooManyFramesToProcess
)。增加maximumFramesToRender
似乎没有帮助。
更新 2
我将测试简化为仅将输入连接到主混音器:
我尝试明确设置格式参数。
这仍然无法在 96kHz 播放。所以我认为这可能是AVAudioEngine
.