我目前正处于开发原生iOS应用(Swift 3)的项目的研究和原型开发阶段,其中包括多通道音频播放器(多个立体声MP3文件)。我在网上发现的信息非常有限,尤其是用Swift 3编写的信息,因此在我继续研究时会在这里提出一个问题。
关于框架,到目前为止,从我看来,AVFoundation似乎可以胜任。它的级别不是太低,并且具有良好的功能集。它支持使用AVAudioPlayer播放多个音频文件。我正计划尽快对此进行原型设计。
但是我是Swift和iOS开发的新手,它拥有大量的库,所以我想知道我是否丢失了任何东西,如果我在正确的地方。任何具有一般信息和想法的答案都将被投票通过。要获得可接受的答案,请使用适当的框架,AVFoundation或合理的替代方案提供一些示例大纲代码。
如果没有答案,到那里时,我会发布自己的代码。
特别是我需要从项目资源中的MP3文件中获得2到10个输入通道,每个通道都有自己的增益,可以分别调整增益,然后将所有这些混合在一起,并保持其立体声通道到单个输出(设备),并获得主要收益。有些曲目需要循环播放,有些则不需要。轨道需要精确同步。这仅用于提供信息,大纲代码可以很好地覆盖要点。
研究笔记和资源
与AVFoundation相关的资源的集合。
Apple: AVFoundation Programming Guide
此文档起初看起来令人鼓舞,但实际上仅涉及视频。它说:
AVFoundation框架有两个方面-与视频有关的API和与音频有关的API。较早的与音频相关的类提供了处理音频的简单方法。它们在《多媒体编程指南》中有所描述,而不在本文档中进行了描述。
“多媒体编程指南”在Apple的其他地方也与此相关,但从未链接,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
已更新为Swift3。一些有用的信息。
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,提供了对该技术的有用概述。
我正在研究同一个问题,最好的办法是使用avplayer转码要播放的媒体内容,这里是draft,也许可以帮忙。