我正在尝试在从库中检索到的Raspberry Pi 3上播放声音。我需要提供一个准确的时间来确定样品何时会撞到扬声器。然后,库将提供与时间同步的样本。我正在使用ALSA播放声音。但是我似乎无法准确地获得时间。我尝试了几种snd_pcm_htimestamp(),snd_pcm_delay(),snd_pcm_status_get_delay()和snd_pcm_status_get_audio_htstamp()的组合。我也尝试过writei和mmap。
任何人都可以给我一个提示,告诉我如何找到准确播放样品的时间吗?
答案 0 :(得分:1)
snd_pcm_*delay()
为您提供最佳估算值。但是,许多驱动程序没有实现这一点,并且可能还有其他硬件,软件不知道。
答案 1 :(得分:0)
现在我要回答我自己的问题。事实证明,使用snd_pcm_status()实际上是要走的路。我第一次尝试时遇到了一个错误。以下代码计算自启动以来以下纳秒启动下一个样本的时间:
taskMap