Как перенаправить с аудиовыхода на микрофонный вход с помощью PulseAudio?

Я работаю над мобильным приложением для Maemo/MeeGo, а Maemo использует PulseAudio. Я хочу воспроизвести mp3 для звонящего (и отменить микрофон при его выполнении, а не прослушивать звонящего, все должно быть сделано на фоне), для этого мне нужно перенаправить аудиовыход с определенного (если это невозможно, все), подделать его как вход и сделать приложение для телефона.

На моем компьютере Ubuntu я сделал это с помощью pavucontrol. Я создал NULL-приемник, затем:

Audio Output (from Amarok) --> to NULL Output 
Skype Input <-- NULL Output
Skype Output --> NULL

И это сработало, Амарок играл музыку, и она транслировалась в Skype, не играя мне, и я ничего не слышал обо всех процессах. Проблема заключается в следующем; a) у Maemo нет павуконтроля. б) Даже если бы это было (или если я его упакую), это не будет хорошим, так как это приложение только GUI, и я должен делать все это на фоне, без ввода пользователем. (среднее: CLI или API)

Отвечая на вопрос об этом на Freenode #pulseaudio, и полезный парень сказал: "Это можно сделать с помощью pactl или pacmd, команды, которые вы хотите, - это перемещение-приемник и вывод-вывод-выход, но вам нужно знать устройство и потоковые индексы". Итак, похоже, что pavucontrol - это всего лишь графический интерфейс, pactl и pacmd - это реальная сделка, и, самое главное, это приложения CLI.

Я очень благодарен ему, но я ничего не знаю о "pactl", "pacmd", "move-sink-input" или "device/stream indexes", поэтому мне нужна очень упрощенная страница руководства или источник аналогичного приложения, команда с одним слоем (две целые страницы команд?), просто дайте мне их! ^^) или кто-то с достаточным терпением, чтобы объяснить это мне.

Ответы

Ответ 1

Руководства для pactl и pacmd доступны, если вы дадите им поиск. Я нашел их здесь:

pactl

pacmd (pulse-cli-syntax)

Я думаю, что вас интересует следующий отрывок из руководства pactl:

Идентификатор ввода-передачи-приемника SINK: Переместите указанный поток воспроизведения (обозначенный его числовым индексом) на указанный приемник (обозначенный его символическим именем или числовым индексом).

Вы должны использовать pactl list sink-inputs, pactl list source-outputs, pactl list sinks и pactl list sources в сочетании с некоторыми grep и/или sed или что-то в этом роде, чтобы программно определить правильный поток и потопить.