Как включить трансляцию аудио в Linux

Изображение для статьи о трансляции аудио

Трансляция аудио – или потоковая передача аудио – позволяет воспроизводить звук, который играет на одном устройстве, на другом. Это может быть как живое аудио, так и файлы или даже ввод с микрофона. У многих технологических гигантов есть свои версии трансляции аудио. У Apple есть AirPlay, а у Google – Chromecast. Для Linux существует множество различных методов трансляции аудио благодаря тому, что он является открытым исходным кодом.

Содержание

  • Технический взгляд
  • Что вам нужно для трансляции аудио
  • Как включить трансляцию аудио
  • Часто задаваемые вопросы

Также читайте: Как транслировать аудио с Linux на Chromecast и Google Home

Технический взгляд

Хотя разные производители используют немного разные протоколы, почти вся трансляция аудио использует пиринговые (P2P) сети. P2P приобрел довольно хорошую репутацию за свою связь с торрентами, но метод сетевой передачи не так уж печально известен.

По сути, P2P означает, что как ваше устройство, так и устройство, к которому вы подключены, имеют общие права на доступ к данным – оба могут отправлять и получать данные по своему усмотрению. Для целей трансляции аудио отправитель преобразует аудиоданные в двоичный формат, а получатель преобразует их обратно в аудиоданные. Сжатие, битрейт и буферизация также играют роль в этом процессе, но это другая тема, которую мы сейчас не будем обсуждать.

Что вам нужно для трансляции аудио

Это основные приложения, которые мы используем для трансляции аудио. Существуют и другие методы, требующие больше установки, но это основные, которые вы будете использовать для взаимодействия с Pulseaudio.

Настройки Pulseaudio

Paprefs (настройки pulseaudio) – отличный способ доступа ко всем модулям pulseaudio. Обычно для их реализации нужно просматривать документацию и пользоваться терминалом, но удобный графический интерфейс значительно упрощает этот процесс. Установите Paprefs с помощью следующей команды:

sudo apt install paprefs

Проблема с Paprefs заключается в том, что он использует имя папки по умолчанию для Pulseaudio. Когда вы пытаетесь активировать или установить модули через него, он перенаправляет вас в эту папку по умолчанию. Эта папка не будет существовать, если Pulseaudio был обновлен.

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

Фактическая папка – это “pulse-15.99.1+dfsg1.” Символьная ссылка – это “pulse-13.99.” Paprefs будет регистрировать её как таковую, но она указывает на фактическую папку, а не является новой. Чтобы создать символьную ссылку, терминальная команда выглядит следующим образом:

sudo ln -s '/usr/lib/pulse-15.99.1+dfsg1' '/usr/lib/pulse-15.99'

Также читайте: Как улучшить звук на вашем Linux ПК с помощью PulseEffects

Управление звуком Pulseaudio

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

Следующая команда в терминале установит Pavucontrol.

sudo apt install pavucontrol

Как включить трансляцию аудио

Как и во всем, что связано с Linux, включение трансляции аудио в Linux может варьироваться от простого до крайне сложного. Мое тестирование и методология ориентированы на Ubuntu, но если вы используете Arch или любую другую дистрибуцию, процесс должен быть похожим.

RTP аудиотрансляция

Использование RTP (протокол реального времени) – это самый простой метод, который я нашел при тестировании. Здесь мы используем Pulseaudio.

  1. Перейдите на вкладку Multicast/RTP в Paprefs и отметьте флажки “Включить приемник Multicast/RTP” и “Включить отправитель Multicast/RTP” на обоих устройствах. Вы можете выбрать включить только одно, но я хочу иметь возможность отправлять и принимать с обоих устройств, поэтому я включаю оба.

Скриншот от 2022 09 28 20 28 02

  1. Вы можете либо создать отдельный выход, либо передать звук непосредственно с ваших динамиков на другое устройство. Отдельный выход позволит вам контролировать громкость и формат аудио, которое вы отправляете. Вы должны увидеть поток аудио-монитора с другого устройства в разделе входных устройств Pavucontrol.
  2. Если вы больше любите терминал, вы также можете добавить следующие модули в файл “default.pa” в “/etc/pulse.” Эти модули выполняют ту же функцию, что и активация приемника и отправителя в Paprefs.
load-module module-null-sink sink_name=rtp  
load-module module-rtp-send source=rtp.monitor  
set-default-sink rtp  
load-module module-rtp-recv

Вам может потребоваться изменить права файла default.pa с помощью chmod, если вы выберете делать это вручную.

Также читайте: Как исправить проблему с невозможностью вводить текст в терминале в Linux

Прямая аудиотрансляция

Добавьте следующие строки в файл “/etc/pulse/default.pa” на обоих компьютерах. Эти модули необходимы для аутентификации между сервером и клиентом.

load-module module-esound-protocol-tcp auth-anonymous=1  
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24

Кроме того, установите параметр default-server в файле “/etc/pulse/client.conf”. Это может быть либо IP-адрес, либо имя хоста (имя ПК) сервера.

Аудиотрансляция с Windows на Linux

Если у вас есть компьютер с Windows и вы хотите транслировать на устройство Linux, Pulseaudio не может самостоятельно надежно транслировать с Linux на Windows или наоборот. Scream – это один из немногих альтернативных вариантов, который позволит вам передавать звук с Windows на Linux. Обратите внимание, что этот метод не тестировался на Windows 11.

Установить его так же просто, как загрузить приложение для Windows 10 по ссылке на Github и Linux-приемник из репозитория. Следующие команды для терминала установят приемник и также доступны по ссылке для приемников.

# Redhat, CentOS и т.д.  
sudo yum install pulseaudio-libs-devel  
  
# Debian, Ubuntu и т.д.  
sudo apt-get install libpulse-dev

Если вы хотите обойтись без использования Pulseaudio, Jack предлагает безотказный метод потоковой передачи аудио с Windows на Linux. Этот метод включает использование моста ASIO, который соединяет JACK с аудиовыходом на компьютере с Windows.

Установите JACK на ваши компьютеры с Linux и Windows. В Windows вы можете загрузить и установить его по следующей ссылке. Для Linux вам нужно будет установить его через менеджер пакетов. В моем случае я использовал apt и следующую команду:

sudo apt install jackd

Вам также необходимо установить ASIO Bridge на вашу систему Windows. После завершения установок выполните следующие команды из командной строки Windows:

regsvr32 32bits\JackRouter.dll  
regsvr32 64bits\JackRouter.dll

На вашем компьютере с Linux введите jack_load netmanager в терминале или настройте его на автоматическую активацию с помощью qjackctl (Cadence и Catia также являются отличными патчбоксами) с использованием той же команды. Перейдите на вкладку Опции, отметьте флажок “Выполнить скрипт после запуска” и добавьте команду.

Скриншот от 2022 09 30 18 10 28

Последние шаги – запустить JACK NetDriver на вашем устройстве Windows. Или введите jackd -R -d net в командной строке, запустите ASIO Bridge и установите устройство ASIO на JackRouter. Вы должны увидеть имя хоста Windows в qjackctl или в любом другом патчбоксе, который вы выбрали. Иногда этот шаг требует перезапуска qjackctl, поэтому не переживайте, если это не сработает с первого раза.

Также читайте: Как транскодировать файлы FLAC с помощью flac2all в Linux

Часто задаваемые вопросы

Есть ли какие-либо альтернативные приложения, которые я могу использовать для трансляции аудио в Linux?

Существует множество медиа-серверов и приложений для трансляции в Linux. Было бы невозможно объяснить и пройтись по всем из них, но некоторые из них – Mkchromecast и Soundwire.

Сделает ли включение трансляции аудио мой ПК уязвимым для кибератаки?

Одной из проблем при работе с чем-либо, связанным с сетью, является безопасность. Хотя некоторые методы трансляции аудио могут сделать ваш компьютер уязвимым, вряд ли существует реальная угроза – пока вы работаете в пределах вашей закрытой локальной сети.

Могу ли я использовать эти методы для трансляции аудио на свой телевизор?

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