我目前正在开发一个项目的研究和原型设计阶段,以开发包含多声道音频播放器(多个立体声MP3文件)的原生iOS应用程序(Swift 3)。我发现在线信息非常有限,特别是用Swift 3编写的,所以我想继续我的研究,我会在这里提出一个问题。
关于框架,从我到目前为止所看到的情况看来,AVFoundation将会完成这项工作。它不是太低级别并且具有一组良好的功能。它支持使用AVAudioPlayer播放多个音频文件。我打算很快开始用这个原型进行原型设计。
但我是Swift和iOS开发的新手,拥有大量的库,所以我想知道我是否遗漏了任何东西,如果我在这里正确的话。任何有关此问题的一般信息和想法的答案都将被投票通过。对于一个可接受的答案,使用适当的框架,AVFoundation或合理的替代方案,一些示例大纲代码。
如果没有答案,我会在到达那里时发布自己的代码。
具体来说,我需要2到10个输入通道,来自项目资源中的MP3文件,每个都有自己的增益,可以单独调整,然后所有这些混合,维持其立体声通道,到单个输出(具有主增益的设备)。有些轨道需要循环,有些则不需要。轨道需要准确同步。这只是信息和大纲代码可以很好地涵盖重点。
研究笔记和资源
与AVFoundation相关的资源集合。
Apple: AVFoundation Programming Guide
这个文件起初看起来很令人鼓舞,但实际上只涉及视频。它说:
AVFoundation框架有两个方面 - 与视频和API相关的API仅与音频相关。较旧的音频相关类提供了处理音频的简便方法。它们在“多媒体编程指南”中有描述,而不是在本文档中。
苹果公司其他地方也提到的“多媒体编程指南”从未被链接过,Google的结果指向Apple网站上未找到的网页。它似乎已经消失了。
Rudi Strahl: Mixing Multiple Audio Tracks with AVFoundation
使用AVComposition比较使用多个AVPlayer。示例代码是Objective-C。不确定AVPlayers在第二种解决方案中是如何混合的。也许是AVAudioMix。目前正在看这个。这篇文章谈了一些,但没有提供任何具体细节。
Audio Session Programming Guide
本文档着眼于提供支持功能的AVAudioSession:
AVAudioSession可让您控制应用的音频行为。你可以:
- 为您的应用选择合适的输入和输出路线
- 确定您的应用如何集成其他应用的音频
- 处理其他应用的中断
- 自动配置您正在创建的应用类型的音频
Techotopia: Playing Audio on iOS 10 using AVAudioPlayer
有关使用AVAudioPlayer的一些有用信息。
Stack Overflow: Playing a Sound with AVAudioPlayer
用于播放声音的基本Swift代码。一些答案包括一些额外的功能。
Hacking with Swift: How to Play Sounds Using AVAudioPlayer
再次,涵盖了基础知识。
Sweet Tutos: How To Play Sounds Files And Manage Duration Progress – AVAudioPlayer Tutorial
更新为Swift 3.一些有用的信息。
Xamarin: Playing Sound with AVAudioPlayer
我认为写在Swift 2中。
Apple Video: WWDC 2013 Moving to AV Kit and AV Foundation
虽然没有直接关系,但我发现此视频的前30分钟将开发人员介绍给OS X 10中的AV Kit和AV Foundation提供了有用的技术概述。