您的位置:首页 > 移动开发 > IOS开发

关于音频播放的那点儿事儿(一) 初探iOS音频 CoreAudio Essentials

2018-02-09 12:54 363 查看
https://www.douban.com/note/606580527/



Low-Level Services包含:

1.I/O Kit:驱动

2.AudioHAL:音频硬件抽象层,为硬件提供一个设备独立、驱动独立的接口

3.Core MIDI:提供服务于MIDI流和设备的软件抽象

4.Host Time Services:提供访问计算机时钟

Mac apps 可以被创建成直接应用这些技术,当它们需要尽可能实时的性能。然而,很多音频程序并不能访问这些层级。事实上,在iOS中核心音频为实现实时音频运用更高层级接口提供方法。OpenAL, 举个例子,在游戏中为实时音频使用I/O,但是实际是确实一个小得多,转换API适当的设置移动设备。

在核心音频中Middle-Level Layer,包括数据格式转换、硬盘的读写,解析刘文建,还要插件的使用。

Audio Converter Services:让应用程序处理音频数据格式转换。

Audio File Services:读写基于硬盘的音频数据。可以解析采样频率、码率、时长等信息,分离音频文件的音频帧

Audio Unit Services(播放音频数据) 和 Audio Processing Graph Services(音效处理模块):让应用程序处理DSP(数字信号处理)插件,像均衡器和混音器。

Audio File Stream Services:让你创建的应用程序可以解析音频流文件,就像通过网络连接播放流文件。

Core Audio Clock Services:支持音频和MIDI同步以及基于时间的转换。

Audio Format Services(一个小的API, 在图中并没有展示),协助管理应用程序中的音频数据格式。

在iOS中核心音频提供这些服务的一大部分:

在核心音频 High-level Services包括结合了较低层特点的更直接的接口。

Audio Queue Services提供你记录、播放、暂停、循环和同步音频。它使用必要的编解码器去压缩音频格式。

AVAudioPlayer:为播放音频和循环提供了一个简单的OC接口,以及实现快进和快退。高级接口,可以完成整个音频播放过程,但是不能实现混音器和均衡器功能。

Extended Audio File Services:结合了Audio File Services和 Aduio Converter Services的特点。它给你提供了一个用于读写未压缩和压缩声音文件。

OpenAL是定位音频的开源OpenAL标准的核心音频的实现。它是建立在系统提供的3D混音器音频单元的顶部。所有的应用程序都可以使用OpenAL,尽管它最合适用于游戏开发。

音频一般播放的流程:

1.读取音频文件

2.解析采样频率、码率、时长等信息,分离音频文件的音频帧。

    Audio File Service 读写音频数据,Audio File Stream Services:对音频进行解码

3.对分离出来的音频真解码得到PCM数据

   Audio Converter services:音频数据转换

4.对PCM数据进行音效处理(均衡器、混音器,非必须的)

  Audio Process Graph Services:音效处理模块

5.把PCM数据解码成音频信号

6.把音频信号交给硬件播放

   Aduio Unit Services:播放音频数据

7.重复1-6步 直到播放完成

如上就是音频核心API三个层级以及各个层级内容的功能

关于Framework这里只关注与iOS有关系的

AudioToolbox.framework : Audio Session Services:作为管理你应用程序在手机和iPod设备中的音频行为。

AudioUnit.framework:Audio Unit Services

AVFoundation.framework:提供AVAudioPlayer class

CoreAudio.framework:提供跨核心音频以及底层服务接口的数据类型。

OpenAL.framework:OpenAL

iOS不支持的有:CoreAudioKit.framework CoreMIDI.frame CoreMIDIServer.framework

附录CoreAudio framework 描述了所有这些框架,以及他们包含的头文件。

参考:iOS音频播放 (一):概述
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: