Как транслировать музыку по сети на несколько компьютеров?

78

Результаты

Я хочу иметь возможность ходить из одной комнаты в другую и слышать, как играет одна и та же песня. Как и вы, если вы слушали радио во всех комнатах.

Я хочу этот эффект, но я хочу слушать свою собственную музыку, это можно сделать?

материалы

  • Ubuntu ноутбук.
  • Компьютер Mac

Первая альтернатива

  • Я нашел и настроил программное обеспечение в соответствии с этим ответом
  • Все программное обеспечение на компьютерах и на сервере настроено, как мне продолжить? http://www.pulseaudio.org/wiki/FirstSteps
Alvar
источник

Ответы:

48

Да, с помощью pulseaudio это легко сделать. Вам нужно будет установить и запустить paprefs, Установить папочки который сделает ваши звуковые устройства доступными по сети.

введите описание изображения здесь

введите описание изображения здесь

Эти настройки позволяют публиковать как источники звука, так и приемники по сети, в идеале на другой сервер pulseaudio.

Если у вас настроен сервер без менеджера рабочего стола, вам сначала нужно установить звуковую систему (см. Этот вопрос ). Затем вы можете отредактировать /etc/pulse/default.paраскомментированные строки в разделе « Доступ к сети »:

load-module module-esound-protocol-tcp
load-module module-native-protocol-tcp
load-module module-zeroconf-publish

Если вы хотите использовать отправителя RTP, раскомментируйте эти строки в разделе модуля отправителя RTP :

load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 description="RTP Multicast Sink"
load-module module-rtp-send source=rtp.monitor

Сервер pulseaudio должен быть запущен как демон, pulseaudio -Dесли он еще не запущен. Для оптимизации качества звука настройки /etc/pulse/daemon.confмогут быть адаптированы к личным потребностям.

Альтернативный метод для потоковой передачи аудио в вашей сети может состоять в настройке сервера Icecast (см. Этот вопрос ).

Takkat
источник
14
В случае безголового клиента (скажем, Pi с динамиками на моем кухонном шкафу) было бы полезно узнать, как полностью настроить это с помощью файлов конфигурации и / или команд оболочки.
Рафаэль
Это руководство достаточно общее, чтобы следовать ему в Ubuntu CLI. wiki.archlinux.org/index.php/PulseAudio/…
goetzc
11

Ваш лучший вариант называется Music Player Daemon (mpd).

https://secure.wikimedia.org/wikipedia/en/wiki/Music_Player_Daemon

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

Это уже в Ubuntu, просто apt-get установить mpd

А также хорошая документация: https://wiki.archlinux.org/index.php/Mpd.

MPD может воспроизводить музыку, поэтому у вас может быть множество клиентов (или ораторов, если вы хотите их вызвать) для воспроизведения музыки.

Но на самом деле не ожидайте хорошего качества. Потоковая испорченность звучит плохо (не важно, используете ли вы mpd или pulseaudio). Намного лучше подключить к серверу настоящие динамики и использовать ноутбуки только для управления им.

LOXS
источник
2
Ну, мой дом слишком большой, чтобы использовать провода, поэтому я хочу передавать звук.
Алвар
Вы можете транслировать, не беспокойтесь о качестве, это не будет иметь большого значения, учитывая, что ваше беспроводное соединение достаточно сильное
Рахул Прасад
Как потоковое видео портит качество звука? WiFi - это цифровая среда передачи. MPD выполняет сжатие без потерь? Я не думаю, что это необходимо для современных сетей WiFi.
П
Вау, такой старый ответ. Я даже не помню больше, так как я не использовал MPD с тех пор.
локсы
11

Мне не нужно было делать что-то необычное. У меня есть два нетбука как с PulseAudio, так и практически без названия от Intel. Как я это настроил, получилось немного примерно так.

запустите paprefs на вашем сервере и клиенте. На сервере убедитесь, что у вас включены параметры многоадресной рассылки и биты сервера проверены. вот так введите описание изображения здесь

и многоадресный бит введите описание изображения здесь

На клиенте включите бит о поиске устройств с поддержкой сети введите описание изображения здесь и настройте ваше устройство вывода на виртуальное сетевое устройство с помощью pavucontrol введите описание изображения здесь

альт у тебя должно быть немного магии сейчас

lazyPower
источник
1
За исключением того, что это не имеет ничего общего с RTP.
Кирелагин
Спасибо за этот замечательный урок. Я установил все флажки, за исключением того, что я не могу «настроить мое устройство вывода на виртуальное сетевое устройство через pavucontrol». Насколько я понимаю, это делается через бит, где на вашем скриншоте написано "Internal Audio Analog Stereo on charmes @ nano". Но в моей системе такой кнопки нет вообще. Что я делаю неправильно?
user69748
Я не проверял эти инструкции с 2011 года, поэтому вполне вероятно, что настройки импульсного аудио-демона изменились.
lazyPower
Теперь у меня есть (после перезагрузки) отдельный канал под названием «pulseaudio», который, кажется, направляется моему клиенту. Тем не менее, нет звука, проходящего через него. И мой канал Rhythmbox до сих пор не упоминает "user @ client".
user69748
1

С помощью этого решения вы можете передавать потоковое аудио в любое удобное для вас
время. Ключевым моментом здесь являются возможности обратной связи 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
 }  

это оно. Выберите устройство возврата для вашего аудиоисточника на вкладке «Контроль громкости».
Наконец, вы можете использовать VLC или любой другой потоковый рендерер в точке назначения, используя адрес URL httpd: http://192.168.1.38:8000
Этот ответ также доступен здесь.

оборота лаплас
источник
0

Я не уверен, что что-то подобное может быть достигнуто с помощью DLNA / UPnP, так как я сам не знаком с этим, но выкидываю некоторые ссылки здесь на случай, если это поможет:

Хотя быстрый результат поиска показал бы, что невозможно синхронизировать ...

Илари Каясте
источник
2
DLNA не рекомендуется, поскольку он не может синхронизировать воспроизведение.
Sparhawk
0

Нет хорошего решения (пока). Существует AVB, но его поддержка 802.11 ограничена синхронизацией времени.

themihai
источник
-2

Если вы хотите осуществлять потоковую передачу на телефон Android, вы можете использовать Foobar2000 на сервере и BubbleUPnP ( payware ) на клиенте.

  1. получить вино
  2. получить foobar_v1.2.5.exe
  3. $ wine foobar2000_v1.2.5.exe
  4. следующий, следующий, следующий ... :)
  5. получить foo_upnp
  6. распаковать в папку компонентов foobar2000 (которая, вероятно, находится в ~/.wine/drive_c/Program Files/)
  7. запустить foobar2000
  8. перейдите в Библиотеку → Настройка → Воспроизведение → Выход → Устройство и выберите «Нулевой выход»
  9. убедитесь, что ufwне блокирует соответствующий трафик
  10. в BubbleUPnP:
    1. зайдите в Устройства → Библиотеки и выберите сервер foobar2000
    2. в «Библиотеке» выберите «Захват потока воспроизведения»

Преимущество такого подхода заключается в том, что если вы сделаете паузу на Android, он будет накапливать буфер (так как сервер все еще отправляет).

Протестировано на Ubuntu (Wine версия 1.5.28-0ubuntu1~ppa1) и Windows.

Янус Троелсен
источник