关于性能
关于性能的调整
- 在iOS上,您可以更改OS的音频输出缓冲区的更新频率。
- 更新频率请求值设置函数:AVAudioSession::setPreferredIOBufferDuration(_:)
- 请求值:AVAudioSession::preferredIOBufferDuration
- 当前值:AVAudioSession::ioBufferDuration
- 更新频率越高,延迟越小。但音频输出处理的次数越多,声音断续的风险就越大。
相反,如果更新频率低,则延迟会增加。但音频输出处理的次数减少,宽限程度将提高,因此声音断续的风险会降低。
- 注意
- 即使使用了上述设置函数,也不一定使用请求值运作。
例如在后述的后台播放期间,设置值可能会根据OS而改变。
关于后台播放
- 即使使用了SonicSYNC,在后台播放音频时,与播放延迟相关的性能也可能会降低。
其原因是iOS在后台播放音频时会自动更改缓冲区的更新频率。
此外,性能降低程度取决于在后台播放的应用程序。
已知缺陷/现象
- 在iPhone 7或更早版本的设备上进行Xcode调试时使用SonicSYNC播放会出现声音断续。
这可能是由于挂载了调试器导致负载过高,以及设备中没有足够的可用线程。
在未挂载调试器的环境中运行的确认结果良好。
因此,建议在开发过程中使用性能相对较高的设备,例如iPhone 8或更高版本。
性能的详细信息
各个设备的音频输出的延迟时间
机型 | iOS
版本 | IOBufferDuration
(秒) | SonicSYNC的使用情况
(o/x) | 最小延迟时间
(毫秒) | 最大延迟时间
(毫秒) | 平均延迟时间
(毫秒) |
iPhone 7 | 14.4 | 0.003 | o | 84 | 125 | 101.55 |
0.025 | x | 176 | 208 | 198.55 |
iPhone 12 Pro | 14.5 | 0.003 | o | 94 | 124 | 107.05 |
0.025 | x | 166 | 200 | 182.70 |
- 补充事项:
- 本节中描述的“延迟”包含以下数值:
- 触摸屏设备的输入延迟(取决于设备)
- 播放请求延迟(取决于Atom的Server频率)
- 音频设备的缓冲区更新延迟(取决于设备)
- 到扬声器的输出延迟(取决于设备)
- 评估性能测试结果时的Atom Server频率设置为 60。
另外,本结果基于对各个设备的20次测试。
- 关于用于测试的设备的规格,请参照各制造商的网页。