1.采集音频 → 2. 获取振幅→ 3.绘制。
1. 音频数据获取(根据硬件获取的数据进行数据的处理)
根据场景选择音频来源:
实时音频输入(硬件-麦克风、听诊器等):使用 AVAudioEngine。
音频文件:使用 AVAudioFile 读取本地文件。
实时音频采集
读取音频文件
2.数据处理:提取振幅
将 PCM 数据转换为波形图的垂直振幅值。通常需要对数据做降采样和归一化。
提取振幅
3.绘制波形图
使用Core Graphics绘制波形曲线。以下是两种实现方式:
Core Graphics 直接绘制
CAShapeLayer 动态更新
4. 性能优化
降采样:避免绘制过多点(例如,每秒 44,100 个采样点只需显示 1000 个点)。
后台处理:在 DispatchQueue.global(qos: .userInteractive) 中处理 PCM 数据。
动态渲染:使用 CADisplayLink 实现实时刷新(适合动态波形):
CADisplayLink 优化