问题标签 [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.

0 投票
2 回答
4169 浏览

ios - 斯威夫特:所需条件为假:文件!= nil

该应用程序运行良好,但只要我点击 ChimunkBut​​ton,应用程序就会崩溃并提供以下错误:

错误:AVAudioPlayerNode.mm:678:-[AVAudioPlayerNode scheduleFile:atTime:completionHandler:]:所需条件为假:文件!= nil 2015-05-10 17:24:25.269 Pitch Perfect[50278:1897012] *** 终止应用程序由于未捕获的异常“com.apple.coreaudio.avfaudio”,原因:“所需条件为假:文件!= nil”

0 投票
6 回答
11313 浏览

ios - 使用 AVAudioEngine 进行电平测量

我刚刚观看了 WWDC 视频(AVAudioEngine实践中的第 502 节),AVAudioEngine并且很高兴能够制作基于这项技术的应用程序。

我一直无法弄清楚如何对麦克风输入或混音器的输出进行电平监控。

任何人都可以帮忙吗?为了清楚起见,我说的是监视当前输入信号(并在 UI 中显示),而不是通道/轨道的输入/输出音量设置。

我知道你可以用 来做到这一点AVAudioRecorder,但这不是AVAudioNodeAVAudioEngine需要的。

0 投票
2 回答
5146 浏览

ios - 我可以使用 AVAudioEngine 从文件中读取,使用音频单元处理并写入文件,比实时更快吗?

我正在开发一个使用 AVAudioEngine 进行各种操作的 iOS 应用程序,包括将音频录制到文件中,使用音频单元对音频应用效果,以及播放应用了效果的音频。我使用水龙头也将输出写入文件。完成此操作后,它会在播放音频时实时写入文件。

是否可以设置一个 AVAudioEngine 图形来读取文件,使用音频单元处理声音并输出到文件,但比实时速度快(即,硬件可以处理它的速度)?这样做的用例是输出几分钟的应用效果的音频,我当然不想等待几分钟来处理它。

编辑:这是我用来设置 AVAudioEngine 图形并播放声音文件的代码:

上面的代码实时播放 test2.mp3 文件中的声音,并AVAudioUnitDistortionPresetDrumsBitBrush应用了失真预设。

然后我通过在 [self.player play] 之后添加这些行来修改上面的代码:

我修改了 Vladimir 提供的 renderAudioAndWriteToFile 方法,这样它就不用在第一行分配一个新的 AVAudioEngine,而是使用已经设置好的 self.engine。

但是,在 renderAudioAndWriteToFile 中,它正在记录“无法渲染音频单元”,因为 AudioUnitRender 返回的状态为kAudioUnitErr_Uninitialized.

编辑 2:我应该提一下,我非常乐意将我发布的 AVAudioEngine 代码转换为使用 C api,如果这会使事情变得更容易的话。但是,我希望代码产生与 AVAudioEngine 代码相同的输出(包括使用上面显示的工厂预设)。

0 投票
1 回答
578 浏览

core-audio - 在没有耳机的情况下使用 AVAudioEngine 录制时避免回声反馈

我正在使用 AVAudioEngine 录制用户的声音,同时对声音应用一些实时效果。

由于我需要用户能够在会话期间听到自己的声音,因此我将 AVAudioEngine 图连接起来如下所示:

inputNode -> 音效节点 -> mainMixerNode (点击安装在这里) -> outputNode

我还在 mainMixerNode 上安装了一个节点抽头,以提取处理后的语音并将其保存到缓冲区中。

当我插入耳机时,所有这些都可以正常工作。但是,当我在录制过程中中途拔下耳机时,我会体验到很多尖锐的回声和反馈。我猜这是因为语音被发送到输出进行播放,这反过来又加强了用户的原始输入语音。

如果在录音过程中耳机被拔掉,有没有什么好的方法可以减少反馈?我曾想过动态断开 mainMixerNode 的连接,以便在拔出时声音不会路由到输出,但我不确定是否有更好的方法。

理想情况下,我希望在每个录制会话结束时都有一个音频缓冲区,无论用户在会话中插入和拔出耳机多少次。

有什么想法吗?提前致谢!

0 投票
2 回答
1012 浏览

ios - 带有音量包络的 iOS 音频采样器

我的目标是为 iPhone/iOS 创建一个采样器乐器。

乐器应该以不同的音高/音符播放声音文件,并且应该有一个音量包络。

音量包络意味着当 nit 开始播放时声音音量正在减弱。我尝试了无数种方法来创建它。所需的方法是使用 AVAudioEngine 的 AVPlayerNode,然后实时处理该节点的各个样本。

不幸的是,到目前为止,我在这种方法上没有成功。你能给我一些关于它在iOS中如何工作的指示吗?

谢谢,托拜厄斯

PS:我没有学习Core Audio Framework。也许可以访问 AVAudioNodes 音频单元来执行这项工作,但我还没有时间阅读框架。

0 投票
1 回答
415 浏览

ios - 如何在 iOS 中导出具有效果的音频文件

我使用 AVAudioEngine 来播放多音频文件。我想在不录制的情况下导出这个声音(包括效果和正在播放的多个文件)。

我怎么能这样做?

这是我使用 AVAudioEngine 的代码

0 投票
1 回答
1997 浏览

ios - 在 AVAudioEngine 中从网络流式传输数据,这可能吗?

我有一个应用程序,用于通过使用和AVAudioEngine播放本地文件系统中的文件。这工作得很好。AVAudioPlayerNodesAVAudioFiles

现在我想让我的设置也支持从 Internet 上的服务器流式传输 MP3 文件。

到目前为止我尝试过的

NSURL我希望我可以从指向网络地址的对象创建某种缓冲区,然后我可以将其与我的AVAudioPlayerNode.

我已经搜索了Stack Overflow和一般的互联网,但没有找到任何关于如何实现这一点的好技巧。

我知道AVAudioEngine阵容包括:

  • AVAudioPlayerNode,它可以播放来自AVAudioFile或 的音频AVAudioBuffer。我今天已经AVAudioFile用于我的“本地文件设置”。
  • AVAudioFile,用于本地文件。一个“AVAudioFile”是用一个“NSURL”创建的,所以我尝试了一个指向服务器上 MP3 文件的 URL,就像在 Playground 中一样:

    /li>

这奖励了我这个错误:

  • AVAudioPCMBuffer,这是我希望使用的类,但我找不到任何方法来用数据实例化它。

我的问题(只是为了说清楚:-))

你们有没有聪明人知道如何使用AVAudioEngine互联网上的服务器流式传输 MP3 文件?

还是我应该放弃并AVPlayer为此使用?

期待您的回音。

0 投票
1 回答
602 浏览

ios - 使用 AvAudioEngine 输出时的耳机音量问题

我正在使用 AVAudioEngine 来捕捉用户的声音,同时对声音应用一些实时效果(如混响或某事)。这是我的代码

当我使用带有麦克风的耳机(如耳塞)进行测试时,一切正常。但是当我使用其他一些没有麦克风的耳机时(所以我只能使用 iphone 上的麦克风作为输入源),耳机右喇叭的声音总是比耳机的左喇叭声音小。如何解决?

还有一个我想问的问题,当我写代码的时候

在函数“recordWithReverb”中,代码​​无法正常工作,我无法得到任何输出,为什么会发生这种情况?

0 投票
1 回答
1274 浏览

ios - 在 AVAudioSession 中使用蓝牙播放

我正在尝试使用使用 AVAudioSession 的蓝牙设备播放语音。这是我尝试放入 appdelegate.swiftdidFinishLaunchingWithOptions和 viewcontroller.swift 的代码(一次一次)

所以代码执行完美,但不使用连接的蓝牙设备。实际上,我在 iPhone 上打开了控制中心,在未打开应用程序时将音频源显示为蓝牙设备,但是一旦打开应用程序,蓝牙设备选项就会消失...

其余代码(如果有任何用途)是 -

它基本上是一个现场音频播放器,它从麦克风中获取声音并将其播放到 AUX、扬声器、(蓝牙)

0 投票
1 回答
535 浏览

swift - 获取 CPU 时钟时间 AVAudioEngine

如何在正在运行的 AVAudioEngine 上获取时钟时间或采样准确时间?