3

我编写了一个小程序,在嵌入式 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 下运行的。

4

1 回答 1

1

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

于 2012-05-11T04:24:25.953 回答