ALSA:循环声音问题

Posted

技术标签:

【中文标题】ALSA:循环声音问题【英文标题】:ALSA: Looping Sound Problem 【发布时间】:2011-04-18 10:14:12 【问题描述】:

我编写了一个小程序,用于在嵌入式 Linux 板上测试 ALSA 库。程序配置 ALSA,播放单个声音,然后等待 1 分钟后退出。

这是我观察到的:播放声音后,有无声的停顿,然后再次播放声音。我 100% 肯定该程序本身不会再次播放。

为了进一步调查,我做了另一个实验:在同一块板上使用 aplay,我播放了不同的声音。这工作得很好。接下来我再次执行了我的 hello world 程序。这次除了周期性的声音外,还听到了aplay播放的声音。

我怀疑 alsa-lib 或声音驱动程序中的缓冲区没有被清除。或者我可能没有正确配置软件参数。 snd_pcm_dump 吐出以下信息:

  stream       : PLAYBACK
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 1
  rate         : 8000
  exact rate   : 8000 (8000/1)
  msbits       : 16
  buffer_size  : 32768
  period_size  : 2048
  period_time  : 256000
  tstamp_mode  : NONE
  period_step  : 1
  avail_min    : 2048
  period_event : 0
  start_threshold  : 1
  stop_threshold   : 32768
  silence_threshold: 0
  silence_size : 0
  boundary     : 1073741824

我还应该提到,我没有看到任何这些是我在 Ubuntu 下运行的。

【问题讨论】:

我对 ALSA 的体验很痛苦,因为它的代码存在错误。我会先将库更新到最新版本,然后再试一次。 我对 ALSA 的体验很痛苦 【参考方案1】:

我在不使用 alsa-lib 时遇到了一些类似的问题。但是用 alsa i 和 ubuntu ts self.我发现煞费苦心地检查驱动程序并测试它们是最好的选择,同时使用类似 speaker-test -c2 -twav 的东西也很有帮助 至于你的莎莎实现,我看不到任何东西。但恐怕如果没有更多信息,我将无法提供更多帮助。

【讨论】:

以上是关于ALSA:循环声音问题的主要内容,如果未能解决你的问题,请参考以下文章

ALSA:如何判断声音何时播放完毕

使用 ALSA 从 Line IN 录制声音

树莓 ALSA 声音输出/输入从机

ALSA 需要 MMAP 来在我的游戏中同时播放即时声音吗?

如何将 CD 音轨输入 ALSA 驱动的声音输出设备?

用 alsa 录制 8 位签名单声道 16khz 声音的最简单方法(以与脉冲兼容的方式)?