1

我对 ALSA 声音库有疑问。

让我首先声明,对像我这样的问题的通常回答是“使用 JACK”,并且这个答案没有帮助,因为我可能无法使用 JACK。我在 Android 设备上运行本机 linux 程序(不是NDK,而是真正的本机),根据我的收集,JACK 在 Android 上不起作用,因为某些 libc 和 posix 东西不兼容。

问题:

1) 我可以使用 2 个不同的线程,用于 a) 读取捕获的样本和 b) 播放样本吗?我见过的所有ALSA“全双工”示例都只是使用阻塞功能交替读取/写入声卡,这似乎不太好用,特别是如果你的程序应该做更多的事情。

2)据我了解,ALSA 混合不同应用程序播放的音频,就像 Windows 音频混合器一样。是否有可能获得对音频设备的独占访问权限,以保证我的应用程序是唯一一个播放音频的应用程序,而不会发生动态范围的混合和降级?

4

1 回答 1

2
  1. 您可以为两个播放/捕获设备使用两个线程(请参阅文档)。

  2. dmixALSA 仅在使用插件时才混合音频。默认情况下,这仅针对大多数桌面声卡配置。

    如果你打开一个hwplughw设备,任何软件混音都会被绕过。

    (只要只播放一个流,数据不会以任何方式降级。)

于 2013-02-05T14:40:08.953 回答