Потоковое системное аудио через mpd

Потоковое системное аудио через mpd

Я использую mpd для потоковой передачи музыки на свой телефон (подключенный к Hi-Fi) через http.

Но это работает только для песен в моей базе данных mpd. Я часто хочу воспроизводить что-то в своем браузере и хотел бы, чтобы это также транслировалось через mpd.

Есть ли способ направить pulse audioвыходной сигнал mpdна динамики?

решение1

mpd не принимает источники входного сигнала PulseAudio, поэтому прямого способа маршрутизации PulseAudio нет.черезмпд.

Однако то, чего вы хотите добиться, все еще возможно, с помощью gstreamer и некоторой смекалки. Я добился этого несколько лет назад.

Я написалэта программакоторый реализует компонент «Скрипт конвейера Gstreamer» этой диаграммы:

диаграмма потока http://tiyukquellmalz.org/sean/stream.svg

Подводя итог диаграмме, вот что происходит:

  • mpd считывает музыкальные файлы с диска, декодирует их и «воспроизводит» на module-null-sinkаудиовыход типа PulseAudio.
  • Любые другие программы, которые вы хотите запустить на своем компьютере и которые выводят звук — Adobe Flash, звуковые сигналы оболочки gnome, веб-браузер и т. д. — также отправляют свой аудиовыход на module-null-sinkPulseAudio (он установлен в качестве аудиоустройства по умолчанию в системе).
  • Выход module-null-sinkимеет .monitorисточник, который позволяет вам брать аудио, выведенное на нулевой приемник, и «захватывать» его обратно, как если бы это было устройство ввода (например, микрофон).
  • Pulseaudio выполняет программное микширование «на лету» всех аудиопрограмм на компьютере, включая mpd, веб-браузеры и все остальное, использующее Pulseaudio.
  • Написанная мной программа tribblifyиспользует GStreamer для захвата звука монитора null sink PulseAudio, который содержит смешанный звук как mpd, так и любых других программ в системе; выполняет кодирование в формате MP3; затем транслирует его на сервер Shoutcast / Icecast. tribblifyПо сути, он становится «источником потоковой передачи».
  • Программа tribblifyавтоматически определяет, когда mpd изменяет теги воспроизводимого звука, и передает эти теги в поток Shoutcast.
  • Сервер icecast или shoutcast, который может находиться на том же компьютере или на другом, передает результаты всем подключенным клиентам.

решение2

да - ключ здесь - возможности петлевого соединения ALSA. поэтому сначала вам нужно включить устройство петлевого соединения в ALSA, которое появится в регуляторе громкости PulseAudio как входное устройство (а также как выходное устройство).

sudo modprobe snd_aloop

Затем это устройство можно добавить к серверу mpd:

mpc add alsa://hw:1,1

где hw:1,1 — это входное устройство обратной связи, которое можно просмотреть с помощью командыaplay -l

то вам нужно настроитьплагин вывода httpдля mpd. следующий пример будет выглядеть так/etc/mpd.conf

 audio_output {
    type            "httpd"
    name            "My HTTP Stream"
    encoder         "vorbis"          # optional, vorbis or lame
    port            "8000"
    bind_to_address "192.168.1.38"               # optional, IPv4 or IPv6
    quality         "5.0"                   # do not define if bitrate is d$
#   bitrate         "128"                   # do not define if quality is d$
    format          "44100:16:1"
    max_clients     "0"                     # optional 0=no limit
 }  

вот и все. Выберите устройство обратной связи для вашего аудиоисточника на вкладке Volume Control Playback.
Наконец, вы можете использовать VLC или любой другой потоковый рендерер в точке назначения, используя адрес httpd url:http://192.168.1.38:8000

Связанный контент