我正在做一个音频应用程序,我需要为不同的声音实时操作音频缓冲区。我需要一个在后台运行的异步时钟,我可以在各种回调中提取精确到毫秒的时间,用于各种音频操作目的,如音频播放的停止和开始时间,以及录制和停止录制的时间。
我需要它的精度允许我确定由各种进程造成的延迟,并在我的代码中对其进行补偿。
如何在iOS中实现这样的时钟?
发布于 2012-11-03 05:25:35
如果您正在使用RemoteIO音频单元并从音频会话请求非常短的音频缓冲区,则计数回调缓冲区中的远程回调和PCM样本似乎是将音频与亚毫秒分辨率对齐的最精确方法。其他任何东西都将根据回调之间的延迟量而关闭。
您还可以在mach_time.h头中使用计时器来进行相当精确的单调时间测量,但这不会与音频播放速率同步,也不会考虑子系统之间的各种延迟。
发布于 2012-11-02 19:11:31
如果您还没有这样做,我强烈建议您研究一下AVFoundation Framework,并使用Core Audio。考虑到对准确性的需求,您可以忘记原生NSTimer和NSDate选项。
https://stackoverflow.com/questions/13193975
复制相似问题