0

我正在寻找一种低延迟的方法来找出音频文件中经过了多少秒以保证实时的毫秒精度。根据AVAudioPlayer 类参考,调用-currentTime将返回“当前播放位置的偏移量,以从声音开始的秒数为单位”,但是 anNSTimeInterval是 a double,这意味着几分之一秒是可能的。

作为一个测试场景,我播放了一个音频文件,用户点击了一个按钮。播放不会暂停/停止,但在点击按钮的那一刻,我想获取有关经过时间的信息。在实际应用中,“按钮可能在一秒钟内被多次按下”,因此需要毫秒精度。

我的文件存储为 AIFF 文件,长度约为 1-10 分钟。理想情况下,我想在恢复播放时准确找出哪个样本帧是“下一个” - 但是,这种精度水平有点过分,毫秒精度是完全可以接受的。

AVAudioPlayer 的-currentTime方法是否足以保证当前播放的音频文件的毫秒精度?或者,是否最好使用较低级别的 API,例如 iOS 的音频单元?

4

1 回答 1

3

如果您想要亚毫秒级的相对时间分辨率,请使用低延迟 RemoteIO 音频单元配置转换为原始 PCM 和计数缓冲区 * 长度 + 样本。大多数 iOS 设备将支持小至 6 mS RemoteIO 缓冲区,包含 256 个样本,每个缓冲区都有一个回调。

于 2013-09-11T01:04:28.293 回答