iOS平台专有信息

关于性能

关于性能的调整

在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次测试。
关于用于测试的设备的规格,请参照各制造商的网页。