具有AVFoundation和Swift的iOS多声道音频

时间:2016-11-29 21:48:34

标签: ios iphone audio swift3 avfoundation

我目前正在开发一个项目的研究和原型设计阶段,以开发包含多声道音频播放器(多个立体声MP3文件)的原生iOS应用程序(Swift 3)。我发现在线信息非常有限,特别是用Swift 3编写的,所以我想继续我的研究,我会在这里提出一个问题。

关于框架,从我到目前为止所看到的情况看来,AVFoundation将会完成这项工作。它不是太低级别并且具有一组良好的功能。它支持使用AVAudioPlayer播放多个音频文件。我打算很快开始用这个原型进行原型设计。

但我是Swift和iOS开发的新手,拥有大量的库,所以我想知道我是否遗漏了任何东西,如果我在这里正确的话。任何有关此问题的一般信息和想法的答案都将被投票通过。对于一个可接受的答案,使用适当的框架,AVFoundation或合理的替代方案,一些示例大纲代码。

如果没有答案,我会在到达那里时发布自己的代码。

具体来说,我需要2到10个输入通道,来自项目资源中的MP3文件,每个都有自己的增益,可以单独调整,然后所有这些混合,维持其立体声通道,到单个输出(具有主增益的设备)。有些轨道需要循环,有些则不需要。轨道需要准确同步。这只是信息和大纲代码可以很好地涵盖重点。

研究笔记和资源

Apple: AVFoundation

与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提供了有用的技术概述。

1 个答案:

答案 0 :(得分:0)

我正在研究同一个问题,最好的办法是使用avplayer对要播放的媒体内容进行转码,这是一个draft,也许可以帮上忙。