第一章 概述
#1.1 AV Foundation 框架
处理基于时间的媒体数据的高级 Objective-C 框架
#1.2 MacOS X 及 iOS 媒体底层框架
- Core Audio
- Core Video
- Core Media
- Core Animation
#1.3 AV Foundation 核心功能
#1.4 数字媒体
- 数字媒体采样
- 时间采样
- 空间采样
- 音频采样
- 频率:一定周期内振动完成循环的次数
人类可以接收的音频范围为 20Hz 到 20kHz
- 振幅:信号的强度
- Linear pulse-code modulation 线性脉冲编码调制
- Nyquist rate 尼奎斯特频率 采样对象最高频率的两倍
- 位元深度:用于保存样本值的字节数定义了在线性维度上可行的离散度
描述一个音频资源时,比如一个 44.1kHz 16位LPCM 的音频文件,这里采用的就是采样率加位元深度的描述方式
- 频率:一定周期内振动完成循环的次数
#1.5 数字媒体压缩
- 色彩二次抽样
- YUV
Y(亮度通道) UV(色彩通道)
- 人眼对亮度的敏感度要高于颜色,减少存储在每个像素中的颜色信息不至于使图片的质量严重受损
- YUV
- 编解码器压缩
- 无损压缩(zip、gzip)
- 有损压缩(压缩过程中会损失部分数据)
- 视频编解码器
- H.264
- 压缩维度
- 空间维度:压缩独立视频帧,被称为帧内压缩
- 时间维度:通过以组为单位的视频帧压缩冗余数据,被称为帧间压缩
- GOP 帧类型
- I-frames:关键帧
- P-frames:预测帧
- B-frames:双向预测帧
- 标准
- Baseline:提供最低效的压缩,不支持双向帧
- Main:可以达到比较高的压缩率
- High“计算复杂度高,最高质量的压缩效果
- 压缩维度
- Apple ProRes
- 独立于帧,只有关键帧可以被使用,支持可变比特率编码
- 最高的编解码质量
- 仅支持 MacOS X
- H.264
- 音频编解码器
- AAC
#1.6 容器格式
* QuickTime
* MPEG-4
第二章 播放和录制音频
#2.1 Mac 和 iOS 的音频环境
- 音频环境管理,硬件的管理及场景的管理(Audio Session)
#2.2 理解音频会话
-
音频会话分类(AVAudioSession Category)
- Ambient:
游戏,允许混音,非音频输入,音频输出
- Solo Ambient:
游戏,不允许混音,非音频输入,音频输出
- Playback:
音视频播放器,可选混音,非音频输入,音频输出
- Record:
录音机、音频捕捉,不允许混音,音频输入,非音频输出
- Play and Record:
VoIP、语音聊天,可选混音,音频输入,音频输出
- Audio Processing:
离线会话和处理,不允许混音,非音频输入,非音频输出
- Multi-Route:
使用外部硬件的高级A/V应用程序,不允许混音,音频输入,音频输出
- Ambient:
-
音频会话选项(AVAudioSession options)
-
音频会话模式(AVAudioSession modes)
-
配置音频会话
// 设置分类 [[AVAudioSession sharedInstance] setCategory... // 激活 [[AVAudioSession sharedInstance] setActive...
#2.3 使用 AVAudioPlayer 播放音频
- 播放本地或者内存中的音频
对于 AVAudioPlayer 实例要强引用
- 主要功能
- 播控
- 修改音量
- 修改声场
- 调整速率
- 设置循环播放
- 音频计量
- 适合音频播放的 Audio Session 配置
- 处理中断事件
- 对线路改变的响应
- 音频输出设备
- AVAudioSessionPortLineOut
总线坞
- AVAudioSessionPortHeadphones
有线耳机
- AVAudioSessionPortBluetoothA2DP
Advanced Audio Distribution Profile 蓝牙
- AVAudioSessionPortBuiltInReceiver
贴耳内置听筒
- AVAudioSessionPortBuiltInSpe
- AVAudioSessionPortLineOut
- 音频输出设备