在 alsa 或 arecord 中以编程方式拆分音频通道

问题描述 投票:0回答:0

我有一个 alsa 声卡,它接收四个(单声道)音频通道音频作为 24 位样本的交错流(即 ch1,ch2,ch3,ch4,ch1,ch2 ... 其中 ch1 表示 24 位样本来自频道 1 等)

使用像

arecord -D plughw:MYSOUNDCARD -c 4 -f S24_3LE -r 44100 -d 1 -t raw myfile.raw
这样的命令我可以将传入的流记录到
myfile.raw
.

而不是将所有四个频道写入文件,我想以编程方式选择频道。 因此,当出现提示时,用户可以输入“3”(比方说)以仅将频道 3 写入文件。或“1,3,4”(比方说)省略频道 2.

我徒劳地搜索了一些关于如何处理这个问题的简单指导。例如,alsa 配置文件似乎提供了操作频道的范围,但我不清楚这是 programmatically 选择频道的途径。同样,arecord 有

-I --separate-channels
参数。查看 arecord 源代码,但这似乎要求传入数据是非交错的(或者我对此有误?)。

我的 C 编码没问题。并且我很乐意(例如)根据需要使用 alsa C 库函数。然而,我正在为从哪里开始的大局而苦苦挣扎。

任何人都可以提供一些简单的指示吗?

谢谢

alsa
© www.soinside.com 2019 - 2024. All rights reserved.