Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用 ALSA APIsnd_pcm_drop()来清除缓冲区。但是当我稍后使用 继续音频时snd_pcm_prepare(),我可以听到之前应该清除的部分音频。当我的值很高时会发生这种情况snd_pcm_sw_params_set_stop_threshold()。如果我使用较低的值,则不会播放上一个音频会话的部分音频。
snd_pcm_drop()
snd_pcm_prepare()
snd_pcm_sw_params_set_stop_threshold()
这里发生了什么?如何完全清除缓冲区?
(我是 ALSA 的新手)
谢谢
我以这种方式解决了同样的问题:
snd_pcm_prepare(pcm_handle); snd_pcm_drop(pcm_handle);
“可以听到之前应该被清除的部分音频。” 因为 ALSA 缓冲区中还有一些音频数据,数据不够大,无法播放。将音频包放入 ALSA 缓冲区可以解决问题。