Сегодня я наконец воплотил давнюю мечту — получить удалённый доступ к домашней музыкальной библиотеке с мобильного устройства. Отныне никаких флешек с гигабайтами музыки, никакой конвертации, перебрасывания музыки на телефон. Всё, что теперь нужно — это foobar2000 на домашнем ПК и foobar2000 mobile на телефоне (есть для Android, iOS и Windows Phone).
Долгое время я не мог запустить сервер на компьютере так, чтобы он был доступен извне. Когда я наконец настроил роутер и файрволл, оказалось, что в моей Windows отключен какой-то компонент, отвечающий за протоколы UPnP. Я перепробовал всё, осталась только переустановка Windows, а на это у меня времени не было.
Но вот недавно системный жесткий диск начал давать сбои, и я купил небольшого объёма SSD, после чего установил на него Ubuntu 18 и Windows 7 (бесконечно устал от ни в какую не отключаемых обновлений Windows 10). Теперь наконец-то появилась возможность запустить на компьютере UPnP медиа-сервер. Но когда я запустил и настроил сервер, успешно подключился к нему с foobar2000 на ноутбуке — оказалось, что foobar2000 mobile по какой-то непонятной причине не может подключиться к серверу через интернет (не через локальную сеть). Я потратил на настройку полдня и был ужасно огорчен, когда понял, что все усилия пропали даром.
К счастью, на днях разработчик foobar2000 ответил на мой баг-репорт (на hydrogenaud.io) и подсказал решение проблемы (временное, т.к. по факту я столкнулся с каким-то скрытым багом мобильного плеера). И вот теперь я могу поделиться алгоритмом настройки удалённого медиа-сервера с вами.
Настройка foobar2000 + UPnP
Нам понадобится последняя версия foobar2000 и плагина foo_upnp (UPnP/DLNA Renderer, Server, Control Point). Установите плагин и заходите в настройки (File->Preferences):
В данной статье нас интересует только сервер. Включаем его и единый формат потока для всех устройств.
Здесь находятся настройки транскодирования. Мы выбрали использование профиля Default для всех устройств (иначе можо выбирать профиль по HTTP-заголовку User-Agent). На скриншоте можно видеть, что я отключил любое транскодирование и преобразование. Это вполне рабочий вариант — мобильный foobar2000 поддерживает все продвинутые форматы, включая Opus, TAK. Однако, если у вас на телефоне медленный интернет или пакет с ограниченным количеством трафик, можно использовать преобразование lossless форматов в MP3 (оптимальное соотношение размера и качества даёт VBR V2) — для этого нужно поставить галочку «Except lossless» в разделе Transcoding. Однако помните, что при транскодировании недоступна прокрутка.
Теперь нам нужно включить доступ к серверу извне (пока он доступен только в локальной сети — например, для устройств подключеных к той же точке Wi-Fi, что и ваш ПК). В поле IP нужно ввести реальный IP (его можно узнать на 2ip.ru).
Настройка файрвола (брандмауэра)
Чтобы клиенты могли подключаться к серверу UPnP, нам прежде всего необходимо открыть его порт для входящих подключений. Для этого добавим правило в настройки брандмауэра Windows. Переходим в Панель управления->Система и безопасность->Брандмауэр Windows->Дополнительные параметры->Правила для входящих подключений), жмём справа Создать правило и вводим настройки:
Настройка роутера
Очень часто домашний компютер подключен к сети не напрямую, а через роутер (кабелем или по Wi-Fi). Если это ваш случай, то все входящие запросы будут поступать на роутер, и ему необходимо сообщить, что запросы к нашему порту для UPnP нужно передавать именно на компьютер. Я приведу пример настройки роутера TP-LINK WR740N.
Сначала узнаем адрес компьютера в локальной сети роутера. Переходим в Панель управления->Сеть и Интернет->Сетевые подключения, открываем текущее подключение и по кнопке «Сведения...» смотрим адрес IPv4:
Теперь переходим по адресу веб-интерфейса роутера (в моём случае http://192.168.0.1), вводим имя и пароль (admin/admin у меня) и пробрасываем порт для протокола TCP. Должно получиться так:
Теперь для верности можно всё перезагрузить — Windows, роутер. Ну и запустить foobar2000 конечно же (если сервер UPnP не стартовал автоматически, запустите его из меню Library).
Настройка foobar2000 mobile
Дело за малым — осталось добавить адрес сервера в мобильный плеер. В самом низу в плеере выбираем пункт Media Servers и добавляем новый (Add new) в формате http://login:password@ip:port. Например: http://audiophile:trickypassword@124.234.123.234:56923.
Именно здесь меня и ожидал подвох. По непонятным причинам подключение UPnP с мобильного плеера чере мобильный интернет не работало, пока я по рекомендации Петера Павловски не указал полный путь к XML: http://audiophile:trickypassword@124.234.123.234:56923/DeviceDescription.xml
Так что если у вас первый вариант не сработал, просто допишите имя этого XML через слеш.Всё готово. Теперь подождите, пока имя сервера станет черным (если этого не произошло, перезапустите плеер) и нажмите на него. В вашем распоряжении вся музыкальная библиотека ПК.
А ещё в контекстном меню треков доступно скачивание:
Теперь осталось сказать большое спасибо разработчикам мобильного foobar2000 и всем, кто пожертвовал деньги на стартап.