26
ноябрь
2024
Трансляция звука с компьютера по сети на смартфон при помощи сервера SoundWire
16:46

Трансляция звука с компьютера по сети на смартфон при помощи сервера SoundWire

26 ноябрь 2024 16:46

Для передачи на беспроводные наушники обычно используется Bluetooth, радиус которого несколько метров. При помощи SoundWire можно расширить доступность звука до квартиры или офиса, где работает сеть Wi-Fi.

Описание задачи

Поставленная задача состоит из трех частей:

1) источник звука - вебкамера с микрофоном, вход звуковой карты или программа Shortwave или WebSDR в браузере
2) сервер для оцифровки и передачи звука через сеть SoundWire (бесплатный) под Linux
3) клиент звука для воспроизведения на динамик смартфона - SoundWireFree под ОС Android

Почему SoundWire?

Мне не хотелось использовать другие серверы и клиенты, такие как Shoutcast или Tizonia, так как вариант SoundWire показался проще.

О сервере SoundWire

Существуют версии сервера SoundWire для различных операционных систем:

  • Windows 7/8/10/11
  • Linux 64-bit (3.0 Qt5)
  • Linux 32-bit (2.1.2 Qt4)
  • Raspberry Pi 32/64-bit (3.1 & 2.1.2)
  • WinXP
  • Linux (all)

Загрузка дистрибутива доступна с домашней страницы https://georgielabs.net/. Так как у меня ОС Linux Green x64 и Linux Mint x64, поэтому скачал версию Linux x64 QT5 (архив tar.gz).

Установка сервера SoundWire

Сервер (ПК):

  • Файл SoundWire_Server_linux64.tar.gz распаковал в папку ~/Загрузки/SoundWireServer
  • Запустил сервер SoundWireServer:

Для работы необходима библиотека — зависимость libportaudio2.

sudo apt install libportaudio2

Для работы необходимо открыть два порта UDP наружу на брандмауэре ПК:

sudo ufw allow 59010/udp
sudo ufw allow 59011/udp

Запуск сервера.

cd ~/Загрузки/SoundWireServer/
./SoundWireServer

Сервер начинает "записывать" звук в системе и транслировать его в сеть. Точнее, сервер начинает передавать данные при подключении к порту 59010 клиента. Второй порт 59011 служит для нахождения сервера.

Задать источник звука можно в "Регуляторе громкости" PulseAudio pavucontrol, который запускается по кнопке "Open Pulseaudio Volume Control" или иным способом.
В "Регуляторе громкости" меняем источник звука, например, на веб камеру, которая будет расположена рядом с радиостанцией, находящейся на приёме.

Настрока pavucontrol для вебкамеры:
webcam

Вебкамера с микрофоном:
mic

Если же цель - транслировать звук с приложения, напиример, Shortwave (интернет-радистанции), запускаем воспроизведение в ней. Источник звука в данном случае - Easy Effects sink (отвод звука от программы)

shortwave_radio

Настройка pavucontrol для Shortwave:
easyeffects

Постоянный IP адрес сервера

Необходимо зафиксировать IP адрес - вместо динамического IP сделать статический (на роутере).
Затем, записываем IP адрес компьютера с запущенным сервером SoundWire

ip addr

Повышение частоты дискретизации с 44100 до 48000 Гц

Завершил сервер SoundWire и задал переменную для частоты дискретизации и запустил сервер:

export SOUNDWIRE_SERVER_SAMPLE_RATE=48000
./SoundWireServer

Установка и настройка клиента Android

Приложение клиента можно установить из магазина Google Play:

На ПК запускаем сервер.
На клиенте в приложении нужно указать IP-адрес сервера и нажать "Ввод",
При подключении символ спирали в окне загорится более ярко.
client

Проблемы и решения

1) Бесплатная версия раз в 30 минут выводит голосом сообщение "Free version". Можно купить полную версию SoundWire, но можно ничего не делать.

2) Нет звука - установить в pavucontrol источник звука "Monitor of Build-In Audio Analog Stereo" или вебкамеру.

3) Иногда прерывается звук. - если Вы просматриваете страницы в веб обозревателе, не хватает производительности процессора. Также, в настройках клиента в Android проверить размер буфера - рекомендую 64 или 128 кБ.

buffer

Требования к скорости сети

Скорость загрузки 250 кбит/с, выгрузки 120 кбит/с.
sysmon

Доступ к серверу в домашней сети из Интернет

См. предыдущие статьи:



Похожие публикации