Как найти идентификатор устройства захвата alsa по имени?

У меня есть решение, хотя оно немного странное и обнажает дыру в ОС.

Во время postinst, я:

cp $(which chrt) bin/chrt
setcap cap_sys_nice+ep bin/chrt

Затем в коде я запускаю процесс с:

bin/chrt -o -p 70 getpid()

Недостаток, который мы только что выявили, заключается в том, что любой, кто использует эту версию chrt, может делать это без прав администратора. Поскольку я запускаю это очень контролируемую целевую среду, я согласен с этой дырой, но я бы не рекомендовал ее тем, кто не имеет контроля над своей целевой средой.

0
03.01.2021, 02:27
1 ответ

arecord -lможно использовать для отображения списка устройств захвата.

Это можно использовать для поиска индекса, хотя это не кажется лучшим вариантом.

Например:

Предположим, я хочу сопоставить карту, которая выводит.

card 5: A4 [AIR 192 4], device 0: USB Audio [USB Audio]
CARD_INDEX="$(arecord -l | pcregrep -io1 '^card ([\d]+): A4 \[AIR 192 4\]')"
0
18.03.2021, 22:39

Теги

Похожие вопросы