我正在寻找一种低延迟的方法来找出音频文件中已经过了多少秒,以实时保证毫秒精度。根据{{3}},对-currentTime
的调用将返回“当前播放位置的偏移量,以声音开始时的秒数衡量”,但NSTimeInterval
为{{{} 1}}这意味着几分之一秒是可能的。
作为测试场景,我播放了一个音频文件,用户点按了一个按钮。播放不会暂停/停止,但是在按下按钮的那一刻,我想获得有关已用时间的信息。在实际应用中,“按钮可能会在一秒钟内被按下”多次,因此需要毫秒精度。
我的文件存储为AIFF文件,大小约为1-10分钟。理想情况下,我希望在重新开始播放时确切地找出哪个样本帧是“up-next” - 但是,这种精度水平有点过分,毫秒精度是完全可以接受的。
AVAudioPlayer的double
方法是否足以实现当前播放音频文件的保证毫秒精度?或者,最好使用较低级别的API,例如iOS的Audio Units?
答案 0 :(得分:3)
如果您想要亚毫秒相对时间分辨率,请使用低延迟RemoteIO音频单元配置转换为原始PCM并计算缓冲区*长度+样本。大多数iOS设备将支持256个样本的6 mS RemoteIO缓冲区,并为每个缓冲区提供回调。