检索ALSA播放延迟

时间:2017-11-28 16:20:22

标签: linux raspberry-pi3 alsa

我正在尝试在从库中检索到的Raspberry Pi 3上播放声音。我需要提供一个准确的时间来确定样品何时会撞到扬声器。然后,库将提供与时间同步的样本。我正在使用ALSA播放声音。但是我似乎无法准确地获得时间。我尝试了几种snd_pcm_htimestamp(),snd_pcm_delay(),snd_pcm_status_get_delay()和snd_pcm_status_get_audio_htstamp()的组合。我也尝试过writei和mmap。

任何人都可以给我一个提示,告诉我如何找到准确播放样品的时间吗?

2 个答案:

答案 0 :(得分:1)

snd_pcm_*delay()为您提供最佳估算值。但是,许多驱动程序没有实现这一点,并且可能还有其他硬件,软件不知道。

答案 1 :(得分:0)

现在我要回答我自己的问题。事实证明,使用snd_pcm_status()实际上是要走的路。我第一次尝试时遇到了一个错误。以下代码计算自启动以来以下纳秒启动下一个样本的时间:

taskMap