最近一直在做iOS音频技术相关的项目,由于单项直播SDK,互动直播SDK(iOS/Mac),短视频SDK,都会用到音频技术,因此在这里收集三个SDK的音频技术需求,开发一个通用的音频模块用于三个SDK,同时支持iOS和Mac。
想要阅读更多技术干货、行业洞察,欢迎关注网易云信博客。
了解网易云信,来自网易核心架构的通信与视频云服务。
需求实现
主要包括音频采集,音频格式转换,音频多路混音(本地文件和网络文件),写WAV/AAC音频文件,通话录制,音频文件播放,耳返,自定义音频输入,音视频设备管理等功能。
本文大部分图片和技术概念阐述均来自Apple官网。
概念介绍
Core Audio 是iOS和 Mac 的关于数字音频处理的基础,它提供应用程序用来处理音频的一组软件框架,所有关于iOS音频开发的接口都是由Core Audio来提供或者经过它提供的接口来进行封装的,按照官方的说法是集播放、音频处理、录制为一体的专业技术,通过它我们的程序可以同时录制,播放一个或者多个音频流,自动适应耳机,蓝牙耳机等硬件,响应各种电话中断,静音,震动等。
Low-Level
I/O Kit:与硬件驱动交互
Audio HAL:音频硬件抽象层,使API调用与实际硬件相分离,保持独立
Core MIDI:为MIDI流和设备提供软件抽象工作层
Host Time Services:访问电脑硬件时钟
Mid-Level
Audio Convert Services 负责音频数据格式的转换
Audio File Services 负责音频数据的读写
Audio Unit Services 和 Audio Processing Graph Services 支持均衡器和混音器等数字信号处理的插件
Audio File Scream Services 负责流解析
Core Audio Clock Services 负责音频时钟同步
High-Level
Audio Queue Services 提供录制、播放、暂停、循环、和同步音频,它自动采用必要的编解码器处理压缩的音频格式
AVAudioPlayer 是专为iOS平台提供的基于Objective-C接口的音频播放类,可以支持iOS所支持的所有音频的播放
Extended Audio File Services