|
1
7
如果您需要极低的延迟,我发现了一个非常简单的解决方案,可以在AVAudioSession singleton上使用(当应用程序启动时会自动实例化): 首先,使用以下类方法获取对应用程序的AVAudioSession singleton的引用: (来自 AVAudioSession Class Reference ) :
然后,尝试将首选IO缓冲区持续时间设置为非常 short(如.002)使用此实例方法:
请记住上面的注释-
从CPU开销的角度考虑,另一件事是音频文件的格式。播放未压缩格式时,CPU开销非常低。苹果建议,为了获得最高质量和最低开销,您应该使用CAF文件。对于压缩文件和最低开销,您应该使用IMA4压缩: (来自 iOS Multimedia Programming Guide ) :
您也可以使用afconvert转换为IMA4:
|
![]() |
2
3
我花了一个下午的时间试图通过玩AVAudioPlayer&AVAudioSession,但我无法使用它。(不幸的是,按照这里接受的答案所建议的设置IO缓冲区持续时间似乎没有帮助。)我也尝试了AudioToolbox,但我发现结果的性能几乎相同——相关用户操作和音频之间明显存在明显的延迟。 在浏览了一下互联网之后,我发现: www.rockhoppertech.com/blog/swift-avfoundation网站/ 关于AVAudioEngine的部分被证明非常有用。下面的代码稍作修改:
} 这可能并不完美,因为我是一个Swift新手,以前没有使用过AVAudioEngine。不过,它似乎确实管用! |
![]() |
Tom · SwiftUI.sheet导致背景白色闪烁 3 月前 |
![]() |
Danil · 种子/填充核心数据的最佳实践?[关闭] 4 月前 |
![]() |
Robin · LazyVGrid项目预计不会击中测试区域 4 月前 |
![]() |
Saurabh Saini · 结构下标 4 月前 |
![]() |
Alex Smith · 移动到下一个视图控制器后如何显示警报? 4 月前 |