我正在做一个音频应用程序,我需要为不同的声音实时操作音频缓冲区。我需要一个在后台运行的异步时钟,我可以将各种回调时间拉到毫秒级,用于各种音频操作目的,例如音频播放的停止和开始时间,以及录制和停止录制的时间。
我需要它,以便精确度允许我确定由各种过程引起的延迟并在我的代码中对其进行补偿。
如何在iOS中实现这样的时钟?
答案 0 :(得分:1)
如果您正在使用RemoteIO音频单元并从音频会话中请求非常短的音频缓冲区,那么计算回调缓冲区内的远程回调和PCM样本似乎是将音频与亚毫秒分辨率对齐的最精确方式。其他任何东西都将被回调之间的延迟量所取消。
您还可以使用mach_time.h标头中的计时器进行相当精确的单调时间测量,但这不会与音频播放速率同步,也不会考虑子系统之间的各种延迟。
答案 1 :(得分:0)
如果您还没有这样做,我肯定会建议您查看AVFoundation Framework,并使用Core Audio。考虑到您对准确性的需求,您可以忘记原生NSTimer和NSDate选项。