深入剖析 AVFoundation 中的 Audio Session
2023-09-20 12:52:27
iOS 音视频(四十三)AVFoundation 之 Audio Session
iOS 音频系统通过使用音频会话来管理应用程序、应用程序间和设备级别上的音频行为。每个应用程序都有一个音频会话,用于与系统沟通,告诉系统打算如何在应用程序中使用音频。这个音频会话充当了应用程序和操作系统之间的媒介,反过来,也就是底层音频硬件。
音频会话的概念
音频会话是一个抽象的概念,它代表了应用程序对音频设备的独占或共享访问权限。当应用程序启动时,系统会创建一个默认的音频会话,该会话允许应用程序播放和录制音频,但不会独占音频设备。如果应用程序需要独占访问音频设备,则需要创建一个新的音频会话,并将其设置为独占模式。
音频会话的属性
音频会话具有许多属性,可以用于控制音频设备的行为。这些属性包括:
- 音频类别 :音频类别指定了应用程序使用音频的类型,例如音乐、语音、游戏等。不同的音频类别具有不同的优先级,系统会根据优先级来分配音频资源。
- 音频模式 :音频模式指定了应用程序使用音频设备的方式,例如播放、录制或两者兼有。
- 音频格式 :音频格式指定了应用程序使用的声音数据格式,例如 PCM、AAC 等。
- 音频采样率 :音频采样率指定了应用程序使用的声音数据采样率,例如 44.1 kHz、48 kHz 等。
- 音频比特率 :音频比特率指定了应用程序使用的声音数据比特率,例如 128 kbps、256 kbps 等。
- 音频编码 :音频编码指定了应用程序使用的声音数据编码方式,例如 AAC、MP3 等。
- 音频解码 :音频解码指定了应用程序使用的声音数据解码方式,例如 AAC、MP3 等。
音频会话的管理
音频会话可以动态创建和销毁,也可以动态更改其属性。应用程序可以使用 AVAudioSession 类来管理音频会话。
音频路由
音频路由是指声音数据从音频源到音频目的地的传输路径。iOS 系统提供了多种音频路由,包括:
- 扬声器 :扬声器是声音数据最常见的目的地。
- 耳机 :耳机是声音数据另一种常见的目的地。
- 听筒 :听筒是声音数据在电话通话中使用的目的地。
- 蓝牙设备 :蓝牙设备是声音数据可以传输到的另一种目的地。
应用程序可以使用 AVAudioSession 类来控制音频路由。
音频播放
音频播放是指将声音数据从应用程序传输到音频目的地的过程。iOS 系统提供了多种音频播放方式,包括:
- 本地文件播放 :本地文件播放是指将声音数据从本地文件中播放到音频目的地。
- 流媒体播放 :流媒体播放是指将声音数据从网络上播放到音频目的地。
- 应用程序间音频播放 :应用程序间音频播放是指将声音数据从一个应用程序传输到另一个应用程序。
应用程序可以使用 AVAudioPlayer 类来播放音频数据。
音频录制
音频录制是指将声音数据从音频源传输到应用程序的过程。iOS 系统提供了多种音频录制方式,包括:
- 本地文件录制 :本地文件录制是指将声音数据录制到本地文件中。
- 流媒体录制 :流媒体录制是指将声音数据录制到网络上。
- 应用程序间音频录制 :应用程序间音频录制是指将声音数据从一个应用程序传输到另一个应用程序。
应用程序可以使用 AVAudioRecorder 类来录制音频数据。
音频混合
音频混合是指将多个声音数据源混合在一起的过程。iOS 系统提供了多种音频混合方式,包括:
- 简单的音频混合 :简单的音频混合是指将多个声音数据源混合在一起,而不进行任何处理。
- 复杂的音频混合 :复杂的音频混合是指将多个声音数据源混合在一起,并进行处理,例如淡入淡出、混响等。
应用程序可以使用 AVAudioMixer 类来混合音频数据。
音频特效
音频特效是指对声音数据进行处理以改变其声音效果的过程。iOS 系统提供了多种音频特效,包括:
- 混响 :混响是指将声音数据延迟并混在一起,以产生回声的效果。
- 延迟 :延迟是指将声音数据延迟一定的时间,以产生延迟的效果。
- 失真 :失真是指将声音数据失真,以产生失真