Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ALSA:循环声音问题_C++_C_Embedded Linux_Alsa - Fatal编程技术网

C++ ALSA:循环声音问题

C++ ALSA:循环声音问题,c++,c,embedded-linux,alsa,C++,C,Embedded Linux,Alsa,我编写了一个小程序,在嵌入式Linux板上测试ALSA库。程序配置ALSA,播放单个声音,然后等待1分钟后退出 以下是我观察到的:播放完声音后,会有无声的停顿,然后再次播放声音。我百分之百肯定节目本身不会再播放了 为了进一步研究,我做了另一个实验:在同一块板上播放一个不同的声音。这很有效。接下来,我再次执行了hello world程序。这次除了周期性的声音外,我还听到了aplay播放的其他声音 我怀疑alsa lib或声音驱动程序中的缓冲区未被清除。或者我可能没有正确配置软件参数。snd_pcm

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

以下是我观察到的:播放完声音后,会有无声的停顿,然后再次播放声音。我百分之百肯定节目本身不会再播放了

为了进一步研究,我做了另一个实验:在同一块板上播放一个不同的声音。这很有效。接下来,我再次执行了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 i和ubuntu ts self。我发现费力地检查驱动程序并测试它们是最好的选择,同时使用扬声器测试-c2-twav也能帮上大忙
至于你的萨尔萨舞,我看不出有什么好看的。但是我担心如果没有更多的信息,我就无法提供更多的帮助。

我对ALSA的经验是痛苦的,因为它的代码中有bug。我会先将libs更新到最新版本,然后再试一次。我对ALSA的体验是痛苦的