Стрим с mpd на смартфон или вся музыкальная коллекция в кармане


Я любитель послушать музыку в дороге и на работе, при этом накопил немалую коллекцию музыки в lossless на домашнем компьютере. Хочется иметь доступ к музыке не только дома но и на смартфоне. Ограниченная память не позволяет уместить всю мою коллекцию, какими бы картами памяти я ее не расширял. Да и не хочется память на это тратить, ведь есть еще множество вещей которые туда хочется записать. Раньше я старался успеть перед выходом на работу собрать все, что хочется сегодня послушать, переконвертировать это в сжатый формат (я считаю lossless на мобильном устройстве это излишки) и записать на мобильное устройство. Но как всегда не успевал, и зачастую приходилось довольствоваться старым заезженным плейлистом. Потом у меня появился безлимитный мобильный интернет и я совсем забросил «перекидывание» музыки, стал слушать интернет радиостанции. Приходилось постоянно прыгать между станциями, и еще эти диджеи постоянно вклиниваются. И тут мне пришла идея сделать свой персональный стрим, с блекджеком и… всеми вытекающими.
Решено было установить на домашнем сервере mpd, на смартфоне приложение для прослушивания интернет радио и клиент mpc, чтобы на лету выбирать музыку. Если интересно как, прошу под кат.

В этой статье я опишу как это все проделать на сервере под управлением Ubuntu и Android смартфоне.
Сразу перечислю достоинства:
  • Доступна вся музыкальная коллекция
  • Память мобильного устройства свободна
  • Можно выбрать битрейт оптимальный для мобильного устройства и не надо ничего конвертировать

И недостатки:
  • Не у всех есть безлимитный 3G
  • Задержка порядка 5 секунд при перемотке трека (обуславливается размером буфера)
  • Не у всех есть домашний сервер

Последний недостаток может быть оспорен, поскольку не обязательно для этого иметь PC сервер. Все это можно развернуть на домашней точке доступа с подключенным USB HDD, например на TL-MR3020, DIR-320, TL-WR1043ND… и так далее, этот список можно долго продолжать, главное наличие USB порта для подключения HDD и поддержки альтернативной прошивки (OpenWRT, DD-WRT, прошивки от Олега и т.п. Кстати, к точке можно еще подключить USB аудио карту и получить домашний медиацентр). Если будет интерес могу написать подробный how-to по настройки, например на OpenWRT.
Вернемся к основной теме, приступим к настройке на Ubuntu Server 12.04.

MPD

Установим пакет
sudo apt-get install mpd mpc

Далее можно установить кодеки при необходимости.
Теперь конфигурация
sudo nano /etc/mpd.conf

Перечислю только обязательные параметры.
# Каталог с нашей музыкой
music_directory         "/data/music"
# Отвечать на запросы извне
bind_to_address         "0.0.0.0"
# Настройка стрима
audio_output {
        type            "httpd"
        name            "My HTTP Stream"  # Имя
        encoder         "vorbis" # Выбираем кодек
        port            "8123" # Удобный для нас порт
        bitrate         "128" # Битрейт, зависти от наших личных предпочтений и возможностей провайдера
        format          "44100:16:2"
}


Теперь перезапустим демона
sudo service mpd restart

Далее надо обновить музыкальную базу, для этого в одном из терминалов скомандуем
sudo tail -f /var/log/mpd/mpd.log
чтобы следить за процессом обновления, а в другом
mpc update

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

VPN

Настройка VPN совершенно не обязательна, это приятная опция придающая большую приватность. Имеется множество статей по настройке VPN сервера. Хочу только сказать, что есть замечательный клиент для Android устройств OpenVPN Settings (требует root, OpenVPN Installer, BusyBox, иногда TUN.ko Installer). А для Android версии >4 есть еще более замечательный клиент OpenVPN for Android. Все приложения доступны в Google Play. OpenVPN заработал на всех моих устройствах, правда на некоторых не сразу.

Android

Плавно перейдем к настройки смартфона. Нам потребуется клиент для mpd и «интернет радио» способное добавить в плейлист пользовательский url потока. Все эти приложения есть Google Play, имеется приличный выбор и тех и других. Я сделал выбор в пользу клиента MPDroid, в нем мне понравился интерфейс и XiiaLive™ — Internet Radio. Ради выбрал первое попавшееся с возможностью добавить пользовательский url потока.
Надо сказать, что MPDroid позволяет сам проигрывать стрим, вещаемый mpd, но меня не удовлетворила стабильность (зависания и краши) и задержка при переключение треков. В виду этого сделал выбор в пользу стороннего приложения проигрывателя. Кому то может не понравится, что приходится использовать одновременно две программы, но меня это вполне устраивает. Возможно в будущем улучшат MPDroid и станет возможно слушать исключительно через него.
Настройка этих приложений не вызывает затруднений, для MPDroid при первом запуске выбираем Default connection settengs, вводим адрес сервера в поле Host, Port по умолчанию. Проверяем содержимое библиотеки, ставим проигрываться трек. Теперь запускаем XiiaLive, идем в «любимые», добавить URL, вводим http:\\10.0.0.1:8123, где 10.0.0.1 адрес нашего сервера.


Приятного прослушивания, и стабильного соединения.

P.S. Еще можно посмотреть в сторону Google Play Music, они позволяют загружать музыку в облако.
Share post
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 28

    0
    Жаль, что приходится перекодировать, ведь такой битрейт не потянет мобильный инет.
    С другой стороны проблема решается покупкой вместительного плеера, типа iPod Classic (160Gb) и ему подобных
      0
      Я считаю, 160Гб — всё равно компромисс. Вроде бы и дорогой, и помещается много, но у меня, например, вся коллекция влезет с трудом, без запаса на будущее.
        0
        У меня сейчас свободно ~ 16Гб, так что согласен, скоро потребуется расширение.
        С другой стороны пока что удобство такого способа (iPod) значительно превосходит вышеописанный — никакой задержки, никакого понижения битрейта (на Beyerdynamic 990 Pro слышно) + скорость включения нужной песни из-за click wheel. А когда библиотека переполнится, я скорее всего из нее удалю то, что мне не нравится, или же найду плеер повместительней.

        Хотелось бы узнать, как запитать в пути ламповый усилитель не таская с собой электростанцию :D
        0
        mdp очень даже умеет кодировать на лету.
          0
          Ну это было понятно. Сам факт понижения битрейта противен. Понятно, что портатив, но на этих ушах слышно.
            0
            ну это уже зависит от формата. Vorbis при небольшом битрейте очень даже неплохо себя ведет. Не сочтите за рекламу, у самого стоит хомсервер и остановился именно на vorbis.
        0
        Не подскажете, какой у вас смартфон и на сколько хватает батарейки при таком использовании?
          0
          Google Nexus i9250, Motorola Defy, порядка 5-7 часов и тот и другой.
          0
          Мне кажется слушать таким образом музыку расточительно для батареи смартфона… На сколько хватает ее в режиме онлайн плеера?
            0
            Думаю, что расход батареи при таком использование соизмерим с расходом в режиме разговора.
            0
            внезапно! mpd умеет делать вывод в icecast, без всякого vpn
              0
              VPN используется не для раздачи потока, а для секьюрности. Использование VPN совсем не обязательно. Поток отдает сам mpd по http.
                0
                да, сори, прочитал статью по диагонали, т.к знаком с темой
                  0
                  OpenVPN с comp-lzo может даже немного сжать поток. Другое дело — смартфон должен быть достаточно мощным, чтобы тянуть одновременно фронт-энд к mpd, openvpn и плеер.
                0
                Возможно я зря упомянул в статье VPN. Это на прямую не относится к сути. Но я плохо представляю домашний сервер без VPN, и считаю, что путь с использованием VPN канала наиболее предпочтительный.
                  0
                  Судя по скринам у вас 4. play.google.com/store/apps/details?id=de.blinkt.openvpn не требует root
                    0
                    Спасибо, для меня это новость, учту
                      0
                      Отличное приложение! Наконец то поднял OpenVPN на телефоне без корневания и клетколома.
                      +1
                      ssh — наше фсе
                      +1
                      Давно хотел поинтересоваться, а это вообще реально слушать музыку через 3G? Будь до вариант описанный выше или какой-нибудь last.fm? Не «подтормаживает»?
                        0
                        Подтормаживает только там где нет покрытия 3g.
                          0
                          Отлично работает.
                          Tune-in на андроиде и только и слушаем. Радио местное препаганейшее.
                          0
                          А пытались ли слушать одновременно с нескольких устройств?
                            0
                            Не пытался, но и не вижу препятствий.
                              0
                              Я слушаю, раздаю в домашней сети по wifi. На планшете способом, описанным в статье, а на ноутах через pulse. С кешированием пульса намучился, задержки ловит, когда много реалтайм трафика по сети начинает гулять (при потоковом видео, например, или видеозвонках в jabber) с другим трафиком нормально, классификация в hostapd отрабатывает. Удобно, быстро, коллекция всегда в плеере)) Обратной связи нет (ни у pulse, ни, тем более, у потока), поэтому звук сильно рассинхронизирован на устройствах — общее звуковое пространство не построить.
                              +1
                              Реквестирую руководство по подключению USB аудио карты к точке доступа.
                              В теории-то понятно как это сделать, но хотелось бы узнать о возможных граблях и как их обойти заранее.
                                0
                                Это не плохо описал dipcore в своем блоге dipcore.com/?p=205. Если говорить о граблях, то мне пришлось потратить очень много времени чтобы собрать нормальную OpenWrt из исходников, поэтому рекомендую воспользоваться конструктором (OpenWrt Image Builder), включив перечисленные в статье модули ядра.
                                0
                                А еще из вариантов — ampache и subsonic/supersonic.

                                Only users with full accounts can post comments. Log in, please.