Улучшение ответа Waschtl этой темы, чтобы вы могли ОБА СЛУШАТЬ И ЗАПИСАТЬ звук приложения:
Сначала мы ищем наш вывод по умолчанию и помещаем его имя приемника в $DEFAULT_OUTPUT
:
$ pacmd list-sinks | grep -A1 "* index"
* index: 1
name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
$ DEFAULT_OUTPUT=$(pacmd list-sinks | grep -A1 "* index" | grep -oP "<\K[^ >]+")
$ echo $DEFAULT_OUTPUT
alsa_output.pci-0000_00_1b.0.analog-stereo
Затем мы создаем комбинированный приемник, который имеет только одно подчиненное устройство: $ DEFAULT_OUTPUT . Звук, сгенерированный приложением (источником), будет перенаправлен на подчиненный приемник (т. Е. Реальный вывод), и мы также запишем его. Это отличается от нулевого приемника, где исходный звук не передается.
$ pactl load-module module-combine-sink \
sink_name=record-n-play slaves=$DEFAULT_OUTPUT \
sink_properties=device.description="Record-and-Play"
sink_properties
не является обязательным и может содержать ошибку, если вы используете пробелы в имени описания.
Тогда мы могли бы использовать pactl move-sink-input ...
команду из Waschtl ответа (с рекордно-н-играми вместо пара ) , но GUI pavucontrol
является более простым (и отлично подходит для проверки / устранения неисправностей):
$ sudo apt-get install pavucontrol
$ pavucontrol &
Затем мы воспроизводим звук в приложении, которое хотим записать. На pavucontrol
Playbackвкладке мы выбираем в раскрывающемся списке приложения: «Записывай и играй» .
Наконец, мы хороши для записи и прослушивания одновременно! ( пример с хромой mp3, работает на переднем плане)
$ parec --format=s16le -d record-n-play.monitor | \
lame -r --quiet -q 3 --lowpass 17 --abr 192 - "temp.mp3"
Или мы можем записать в фоновом режиме и остановить в любое время:
$ parec --format=s16le -d record-n-play.monitor | \
lame -r --quiet -q 3 --lowpass 17 --abr 192 - "temp.mp3" \
> /dev/null &1>/dev/null
$ killall -q parec lame
NB:
- Чтобы удалить все или повторить процедуру: удалите или сбросьте приемники, используя этот ответ .
pulseaudio -k
прекрасно работает, чтобы сбросить все к значениям по умолчанию сеанса.
- Если мы изменим вывод по умолчанию в System Sound Settings, пользовательские настройки воспроизведения приложения будут перезаписаны, и нам придется вернуться в pavucontrol, чтобы вернуть его к комбинированному интерфейсу.
- Чтобы иметь возможность прослушивать звук с нескольких «реальных» интерфейсов (например, наушников, выхода HDMI и т. Д.), Мы должны включить все «реальные» выходы, которые мы можем использовать для прослушивания, в качестве подчиненных устройств записи-воспроизведения-воспроизведения. , например:
pactl load-module module-combine-sink sink_name=record-n-play slaves=real-output-1,real-output-2
.
РЕДАКТИРОВАТЬ: Остерегайтесь, начиная с Ubuntu 18 (может быть 17 тоже), комбинированный приемник, как правило, становится устройством вывода системы по умолчанию, а не реальным устройством вывода. Поэтому, когда вы меняете громкость с помощью значка звука на панели задач, это влияет на звук записи. Обходной путь: После создания комбинированного приемника откройте pavucontrol
вкладку «Вывод». Выберите «View: Virtual Output Devices» и сбросьте громкость звука объединенного приемника до 100%. Затем выберите «View: Аппаратные устройства вывода» и нажмите зеленый значок «Определить как альтернативу» на реальном устройстве вывода.