dbus-soundrecorder — консольная C++ утилита для записи звука воспроизводимого PulseAudio.
PulseAudio — звуковой сервер принимающий звук от одного или нескольких источников (процессов или устройств) и направляющий его одному или нескольким приёмникам (звуковым платам, серверам PulseAudio или процессам). Одной из целей проекта является предоставление возможности перенаправления любых звуковых потоков, включая и потоки от процессов, требующих прямого доступа к аудио-устройствам.
dbus-soundrecorder записывает PulseAudio звук с помощью FFmpeg (набор библиотек и утилита командной строки, позволяющая записывать, конвертировать и передавать цифровое аудио и видео в различных форматах) используя систему межпроцессного взаимодействия D-Bus (система позволяющая отдельным приложениям в ОС сообщатся друг с другом). Служба MPRIS D-Bus позволяет определить предоставляемые приложением (например медиаплеером) отдельные треки, название альбома, исполнителя и других метаданных (тегов).
При смене трека dbus-soundrecorder автоматически начинает запись нового файла и добавляет доступные метаданные, для записи может использоваться реальный или виртуальный PulseAudio интерфейс. Проверить имеющиеся интерфейсы можно командой:
pactl list short sinks
Команда для создания виртуального интерфейса PulseAudio:
pactl load-module module-null-sink sink_name=virtual1
Перед началом записи необходимо удостоверится что приложением используется PulseAudio (используя pacmixer, pavucontrol и др), в качестве опций необходимо задать приложение и интерфейс, например:
dbus-soundrecorder record -a vlc -s virtual1.monitor -i "-sample_rate 44100" -o "-c:a libfdk_aac -vbr 4"
dbus-soundrecorder позволяет с помощью дополнительных опций задать параметры ввода/вывода для FFmpeg (доступные для использования параметры выводятся в комментарии), указать используемый каталог и формат аудио файла (по умолчанию используется *.m4a), количество каналов, выставить запись всего сеанса в один файл (игнорировать смену треков) и др...
Лицензия: GNU General Public License v2 (GNU GPL v2)