9

我正在使用 ALSA APIsnd_pcm_drop()来清除缓冲区。但是当我稍后使用 继续音频时snd_pcm_prepare(),我可以听到之前应该清除的部分音频。当我的值很高时会发生这种情况snd_pcm_sw_params_set_stop_threshold()。如果我使用较低的值,则不会播放上一个音频会话的部分音频。

这里发生了什么?如何完全清除缓冲区?

(我是 ALSA 的新手)

谢谢

4

2 回答 2

1

我以这种方式解决了同样的问题:

snd_pcm_prepare(pcm_handle);
snd_pcm_drop(pcm_handle);
于 2019-03-29T15:04:13.420 回答
0

“可以听到之前应该被清除的部分音频。” 因为 ALSA 缓冲区中还有一些音频数据,数据不够大,无法播放。将音频包放入 ALSA 缓冲区可以解决问题。

于 2014-06-10T06:34:12.670 回答