Я хотел бы перенаправить звуковой вывод программы в файл, в командной строке, как в
$ redirect-wrapper file.wav my-program
так что
- Я не слышу вывод программы, т.е. вывод должен идти только в файл
- Я не записываю ничего кроме программы, т.е. только эта конкретная программа перенаправляется в файл
- остальная часть аудиосистемы оставлена полностью без помех, параметры конфигурации не изменяются взад и вперед или что-то в этом роде
Есть ли способ сделать это? Этот связанный вопрос не помогает, мне нужно решение командной строки, нет "нажмите там, затем там". Это , вероятно, также связано, но также опирается на графическое приложение pavucontrol. Я нашел терминальную альтернативу pavucontrol, pacmd.
Но это все еще только делает возможным следующий компромисс:
- Получить сток по умолчанию и сохранить то, что было. Как? Вероятно, пролистывая
pacmd list-sinks
- Установите приемник по умолчанию для приемника snd-aloop с помощью
pacmd set-default-sink
. - Запись из этой раковины.
- Запустить приложение
- Подождите, пока приложение не откроет свой вход приемника:
pacmd list-sink-inputs | grep name-of-my-program
если это что-то найдет, вход открыт. - Измените значение по умолчанию обратно на то, что было с
pacmd set-default-sink
. - Остановите запись, как только приложение закроется.
Но это все равно изменяет приемник по умолчанию на промежуток времени до пары минут (вход приемника обычно не открывается, пока программа фактически не воспроизводит звуки, которые не должны быть сразу после запуска). Я реализовал этот компромисс; Github .
Все еще в поисках бескомпромиссных ответов.
pacmd list
показывает, какие источники и приемники подключены к определенным программам, поэтому может быть способ их изменить. Попробуйте задать вопрос по списку pulseaudio по адресу lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss. Сопровождающие и разработчики всегда готовы помочь.
~/.asoundrc
. Может быть, вы можете избежать этого как-нибудь.