1.什么情况下可以不用coreAudio ?
如果你只是简单的播放播放音频,在ios上你可以用 AV Foundation中AVAudioPlayer,ios 还提供了 AVAudioRecorder用来录制到文件。
在mac上面,可以使用AppKit的NSSound,Mac上没有想对应的录制的Objective-C API.
2.必须要用coreAudio的情况?
mixing, changing formats, applying effects,or workingdirectly with the audio data
3.core audio是一种专门用来处理数字音频的框架集合,框架可以分为两组:
1.音频引擎(处理音频流) 2.辅助api(帮助将音频数据输入或者输出这些引擎,或者以其他方式使用它们)
4.三种音频引擎api
a. Audio Units
Core Audio 的大部分工作都是在这个底层API中完成的,每个单元从某处接收音频数据的缓冲区(输入硬件,另一个音频单元,你的代码回调,等等),在其上执行一些工作(例如应用一个效果),并将其传递给另外一个单元.一个单元有多个输入和输出,这将多个音频流混合到一个输出成为了可能。
b. Audio Queues
这是音频单元之上的抽象,使其更容易播放或者录制音频,而不必担心在直接使用时时间受限的Units 出现的线程问题。
c.OpenAL
这个API 是一个创建位置,3D音频(环绕声)的行业标准,旨在类似月OpenGL 图形标准.
5.辅助API
Audio File Services(音频文件服务):框架抽象了各种音频文件的容器格式细节,因此不必要编写专门针对AIFFS,wave,mp3或任何其他格式的特性代码。你打开一个音频文件,就可以获取或者设置所含音频数据的格式,并开始读写。
Audio File Stream Services(音频文件流模式) 这个框架可以帮助你找到网络流中的音频格式,这使得你可以将其提供给播放引擎之一或者以你感兴趣的方式处理。
Audio Converter Services (音频转换服务)
音频可以以多种样式存在,但是当他到达音频引擎时,他要以一种未压缩的可播放格式(LPCM).音频转化服务帮助你在编码格式(AAC或者MP3)和实际经过音频单元的未压缩的原始样本(LPCM)之间进行转换,
Extended Audio File Services (扩展的音频文件服务) 这个是音频转换和音频文件流的结合。可以使读取或者写入 和转换同时进行而不必须先写入再读取。
Core MIDI
大多数核心音频框架都设计处理你从其他源接收或从输入设备捕获的采样音频。在只有mac的核心MIDI框架中,你可以通过描述音符以及他们将如何播放来动态的合成音频。
ios上特有的:
Audio Session Services 这个仅适用于ios平台,这个能够使你的应用程序与其他部分协调对音频资源的使用。
例如:你可以声明一个音频“类型” ,它可以让你在铃声或者静音开关的情况下是否静音你的应用程序。
网友评论