Как перенаправить с аудио выходного сигнала на вход микрофона с помощью PulseAudio?
-
12-10-2019 - |
Вопрос
Я работаю над мобильным приложением для Maemo/Meego, а Maemo использует Pulseaudio. Я хочу сыграть в MP3 -абонент (и отменить микрофон при этом, а не слушать вызывающего абонента, все должно быть сделано на фоне), чтобы сделать это, я должен перенаправить аудио -вывод с определенного (если не возможно, все ) приложение, подделка в качестве ввода и заставьте приложение для телефона.
На моем компьютере Ubuntu я сделал это с Pavucontrol. Тогда я создал нулевую раковину:
Audio Output (from Amarok) --> to NULL Output
Skype Input <-- NULL Output
Skype Output --> NULL
И это сработало, Амарок сыграл музыку, и она транслировалась в Skype, не играя со мной, и я ничего не слышал обо всех процессах. Проблема в том, чтобы; А) У Маемо нет павуконтроля. б) Даже если бы это было (или если я его упаковал), это не было бы хорошим, так как это приложение только для GUI, и я должен сделать все это на фоне, без какого-либо пользовательского ввода. (среднее: CLI или API)
На вопрос об этом на Freenode #PulseAudio и полезный парень сказал: «Это может быть сделано в значительной степени через PACTL или PACMD, желаемые команды-это перемещение и вводимость движения, но вам нужно знать индексы устройства и потока . " Таким образом, похоже, что Pavucontrol - это просто графический интерфейс, PACTL и PACMD - реальная сделка, и, что самое важное, это приложения CLI.
Я действительно благодарен ему, но я ничего не знаю о «PACTL», «PACMD», «MOVE-SINK-вход» или «Индексах устройства/потока», так что мне нужна очень упрощенная страница ручной работы или источник Подобное приложение, команда с одной линией (две? Целая страница команд?, Просто дайте мне их! ^^) или кто-то с достаточным терпением, чтобы объяснить мне это.
Решение
Руководство для pactl
а также pacmd
легко доступны, если вы дадите ему поиск. Я нашел их здесь:
Я думаю, вы заинтересованы в следующем отрывке из pactl
руководство:
Идентификатор идентификатора перемещения SINK-ввода: переместите указанный поток воспроизведения (идентифицированный по численному индексу) в указанную раковину (идентифицированное по его символическому имени или численному индексу).
Вы должны иметь возможность использовать pactl list sink-inputs
, pactl list source-outputs
, pactl list sinks
, а также pactl list sources
в сочетании с некоторыми grep
и/или sed
Или что -то в этом роде, чтобы программно определить правильный поток и тонуть.