我可以将旧的 AVAudioPlayer 与新的 AVAudioEngine 一起使用吗?

Posted

技术标签:

【中文标题】我可以将旧的 AVAudioPlayer 与新的 AVAudioEngine 一起使用吗?【英文标题】:Can I use the old AVAudioPlayer with the new AVAudioEngine? 【发布时间】:2014-11-26 03:21:38 【问题描述】:

我的应用使用 AVAudioPlayer 播放音频文件,我已经使用它的大部分方法和属性来构建一个播放控制界面,其中包含播放/暂停、搜索等按钮。现在我想添加一个音高转换功能,使用ios 8 中的新 AVAudioUnitTimePitch。我在this question 中找到了示例代码,它在我运行它时可以工作,但它使用 AVAudioPlayerNode 而不是 AVAudioPlayer。

有没有办法将 AVAudioPlayer 连接到 AVAudioEngine,而不是 AVAudioPlayerNode?还是 AVAudioPlayerNode 与 AVAudioPlayer 完全不同,尽管它们的名称相似?

我问是因为如果我必须用 AVAudioPlayerNode 替换 AVAudioPlayer,我将不得不重新设计我的大部分控件界面以使用 AVAudioPlayerNode 中可用(或不可用)的不同方法和属性。

【问题讨论】:

是的,它们完全不同,是的,您必须重新设计您的控制界面(如果您想使用 AVAudioEngine)。另一种方法是继续按照我们在 AVAudioEngine 存在之前的方式进行音高转换...... 我不知道使用 iOS 8 之前的方法来做到这一点。你能分享一个链接吗? 您想了解核心音频和音频单元。 AVAudioEngine 只是这个的前端(一个非常好的前端)。 好的,我猜你的意思是设置一个 AUGraph,然后应用 kAudioUnitSubType_NewTimePitch 音频单元。我使用 Core Audio 来设置多通道混音器并在其他应用程序中应用 DSP 插件,并且可能会解决这个问题,但对于这个应用程序,我认为这需要比新的 AVAudioEngine 重新编写更多代码。 【参考方案1】:

过去一两周我一直在处理这个问题。我的目标是创建一个模仿 AVAudioPlayer 功能的 AVAudioEngine 播放器。它似乎工作得很好。看看它,如果你发现它有任何帮助,请告诉我。

https://github.com/danielmj/AEAudioPlayer

【讨论】:

【参考方案2】:

AVAudioPlayer 和 AVAudioEngine 是在 iOS 上使用 audioon 的不同方式。请参阅以下文章以获取完整的音频 API 列表以及简短说明:Audio APIs Owerview

【讨论】:

以上是关于我可以将旧的 AVAudioPlayer 与新的 AVAudioEngine 一起使用吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何将旧的小部件迁移到新的小部件

如何将旧的 Wordpress 博客文章 url 重定向到新的

将旧的时间字符串转换为新的string时间字符串

如何使用 Daffodil 将旧的 VC6 项目移动到 VS2010

尝试将旧的 Eclipse Android 项目导入 Android Studio

将旧 Laravel 项目安装到最新服务器 [关闭]