问题标签 [libalsa]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
334 浏览

alsa - 需要重试打开 alsa 才能正常工作

我可以毫无问题地运行 aplay,并播放 wav 测试文件。

在我的应用程序中,对 snd_pcm_open 的调用会出现以下错误:

我在 aplay 中检查了代码,我使用的是相同的设备名称(“默认”)和相同的模式。代码实际上是相同的,只是 aplay 只是一个用于测试 ALSA 的文件,我正在尝试在一个非常大的应用程序中运行 ALSA。

当我意识到只需在短暂睡眠后重试呼叫,它就可以工作时,它变得更加奇怪。

如果我尝试 snd_ctl_open 而不是打开设备,则会出现错误

之后我可以打开设备。好像在一次调用 snd_pcm_open 或 snd_ctl_open 后解决了这个问题,所以下一次调用它就可以工作了。

什么会导致这种行为?我不想调用 snd_pcm_open 两次。这是有问题的症状。

我正在运行 ubuntu。

0 投票
1 回答
376 浏览

c - 程序化 ALSA 环回

我需要一些指针,从以下内容开始:

从使用 ALSA 播放音频的任何应用程序到连接的扬声器,我想抓取样本并进行一些音频处理。我无法控制播放器,我希望能够处理来自任何来源的音频。基本上它将是一个紫外线计,也许稍后会使用 FFT(全部都在命令行上)。此外,我希望我的应用程序是独立的。

在我的研究中,我发现:

  • 有一个环回内核模块。
  • 你可以用配置文件做一些花哨的事情。
  • 可以创建插件。

使用内核模块和更改配置文件会引入我的应用程序对系统配置的一些依赖关系。
并创建一个插件,我放弃了对应用程序的控制,并且无法随时启动/终止它。

这对我来说并不令人满意,所以我想知道是否有办法:

  • 以编程方式创建环回设备
  • 或者是否有任何其他方式可以从其他应用程序正在写入的 pcm 播放设备中读取。
0 投票
1 回答
114 浏览

alsa - ALSA 排序器队列不运行

我的示例代码用于snd_seq_queue_status_get_tick_time()检查正在运行的队列。但结果是它总是报告零滴答时间。

0 投票
1 回答
152 浏览

c - 未输出到 ALSA 定序器的预定事件

在这个示例代码中,我设置了一个 ALSA 客户端,创建了一个排序器队列和输出端口。然后我将预定的音符打开和音符关闭事件输出到此端口并等待击键。此时我设置了 midisnoop 从端口读取。

当击键到达时,我启动队列并读取实时刻度。我希望该注释显示在我正在监视的输出端口上。什么都没有出现。

0 投票
0 回答
366 浏览

linux - linux - 在 /etc/asound.conf 中结合多个插件的 ALSA 配置

我有一个可用的 VU 仪表插件,但希望将它与频谱分析仪结合使用,但两者都有自己的 /etc/asound.conf。我想将两者结合在一起,但由于频谱需要环回,我没有尝试过任何工作。我已经花了几天的时间来解决这个问题,但现在必须寻求帮助。

/etc/asound.conf - 频谱分析仪:

/etc/asound.conf - VU 表:

任何帮助将不胜感激。

0 投票
0 回答
39 浏览

audio - 8 通道录音,32 位宽度音频无法播放

我可以使用 alsa utils (pcm_read) 以以下格式录制 8 通道麦克风音频(32 位音频,但实际内容是 24 位,8 位填充):

我正在使用下面的代码将 32 位音频转换为 24 位音频,但播放的音频仍然是乱码。

如果我做错了什么,谁能给我一些指示?

0 投票
1 回答
4278 浏览

alsa - aplay 管道使用文件而不是标准输入和标准输出来记录

下面的命令将记录默认设备的数据并将其输出到标准输出,aplay 将播放标准输入的数据。

为什么我们更喜欢标准输入和标准输出,而不是像下面这样写入文件并从中读取?

0 投票
0 回答
906 浏览

c - 使用 alsa c api 同时播放多个 wav 文件

我想为我的项目实现一个特定的功能,包括sample-default.wav在后台连续播放一个sample-specific.wav文件,并在某些特定条件匹配时播放一个文件。我真正想要的是,当sample-specific.wav文件运行时,文件量sample-default.wav变为 0(或者简单地说,我想在运行sample-default.wav时静音文件sample-specific.wav)。

我正在尝试使用alsa-libraryfor c 来实现此功能。我已经尝试了几乎所有方法来实现这一点,但似乎没有什么对我有用。


我目前的做法

我正在尝试使用系统声音离开dmix插件添加两个虚拟声音设备。我搜索了谷歌,发现我需要编辑文件来创建不同的声音设备。alsadefault/etc/asound.conf

我添加了两个声音设备,分别命名为notificationsample-sound。我当前/etc/asound.conf的文件如下所示:-

aplay当我使用以下命令播放sample-default.wav文件时,这可以很好地工作:-aplay

它可以工作,但是当我尝试运行以下代码以在我的设备上sample-default.wav使用时:-alsa librarynotification

它编译成功但抛出运行时错误:-

我不知道上面的代码出了什么问题。

notification如果上面的代码工作正常,那么我将在两个设备(和)上播放两个声音文件,并使用我已经实现sample-sound的库控制这些设备的音量。alsa-mixer

我在过去几周试图实现这一目标,但似乎没有一个解决方案对我有用,所以请帮我解决这个问题,如果你知道更好的方法,请提出建议。


0 投票
0 回答
165 浏览

codec - Alsa Underrun 后无播放

我有一个带有两个音频编解码器的嵌入式平台。一个是 tlv320aic3x (I2S) 编解码器,另一个是 USB 编解码器。场景是 rtp 流与 PjProject 会议转发到两个编解码器。建立呼叫后,两个编解码器都会出现欠载。pjmedia 部分检测到欠载并准备并启动新的编解码器。USB编解码器没有问题,但I2S编解码器有时在重新启动后没有播放。轮询调用中函数 snd_pcm_wait_nocheck 中编解码器块的播放回调。我认为问题在于他一直等到文件描述符准备好写入但驱动程序没有读出数据。有谁知道这个问题,或者可以给我一个提示,我可以在哪里找到问题?!

0 投票
1 回答
296 浏览

real-time - Alsa:snd_pci_readi() 记录

我有一个专用线程,可以通过snd_pcm_readi(). 录制可以正常进行大约 30 分钟(每个文件持续一分钟),之后文件大小逐渐减小并导致“从音频接口读取失败 err = -32

任何帮助都会得到帮助。谢谢你。