Я использую 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-sink
PulseAudio (он установлен в качестве аудиоустройства по умолчанию в системе). - Выход
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