За шесть лет существования Raspberry Pi появилось огромное количество руководств, как превратить его в домашний мультимедиацентр. Вот только классический мультимедийный центр из него настолько плохой, что проигрывает даже китайским HDMI-свисткам. Точнее, так кажется, пока ты не начинаешь мыслить, как линуксоид.

Первоначальная идея большинства людей, которые покупают Raspberry Pi, чтобы сделать из него ТВ-приставку, примерно следующая: подключаем к «малинке» жесткий диск или флешку с фильмами, подключаем пульт с гироскопом, устанавливаем мультимедийный комбайн Kodi и наслаждаемся фильмами, ютюбчиком, ТВ и радио.

Это абсолютно логичное решение, которое ты будешь проклинать уже через два часа. Kodi — прекрасная оболочка для мультимедийной приставки, но не лучшим образом оптимизированная для Raspi. Иной раз ее приходится перезапускать, курсор мыши во время просмотра видео дико тормозит, а некоторые функции не работают.

Плюс ко всему ты, конечно же, столкнешься с неработоспособностью половины опубликованных в местном репозитории плагинов. Хочешь посмотреть YouTube — фиг тебе, плагин работает один раз через десять, послушать радио можно, но придется еще найти работающий плагин. ТВ? Даже не пытайся.

2018 год, стримы, облака, Netflix, а ты сидишь и смотришь видосики с жесткого диска с тормозящим курсором. А если попробуешь открыть YouTube в браузере, то увидишь такое слайд-шоу, что можно на конференциях выступать.

 

Мыслим в обратную сторону

Raspberry Pi кажется настолько непригодным к использованию в качестве ТВ-приставки, что я мог бы порекомендовать купить вместо него настоящую ТВ-приставку (типа Nvidia Shield) или даже китайский HDMI-свисток. Но я не буду этого делать, потому что у Raspberry Pi есть два преимущества:

  1. Это мини-ПК на базе Linux, с которым можно сделать все что угодно (в отличие от залоченных приставок и приставок на базе Android).
  2. У Raspberry Pi большое комьюнити и множество разработчиков.

Не стоит пытаться превратить Raspberry Pi в классическую приставку, управляемую с пульта. Его нужно превратить в сервер, которым ты сможешь рулить с ноутбука или смартфона. Захотел посмотреть YouTube — взял телефон, запустил аппликуху, выбрал видео и нажал плей. Хочешь музыку — у тебя на телефоне есть виджет. Торренты? Скачиваешь файлик на ноутбук и с помощью удаленного торрент-клиента закидываешь на Raspi.

 

Что тебе понадобится

Итак, тебе нужны следующие вещи:

  1. Raspberry Pi 3.
  2. SD-карта минимум на 8 Гбайт, минимум 10-го класса.
  3. Внешний жесткий диск для хранения музыки и фильмов.
  4. Клавиатура и мышь (нужны только при начальной настройке и во время неполадок).
  5. USB-зарядник на 2,5 А и microUSB-кабель.

Raspberry Pi без проблем дружит с Bluetooth-клавиатурами и мышами, но работать они будут, естественно, только если загрузка ОС прошла успешно. В качестве мыши очень удобно использовать пульт с гироскопом (на Aliexpress такие стоят 3–5 долларов). Он эмулирует движения мыши с помощью наклонов.

USB-зарядник подойдет любой, даже меньше, чем на 2,5 А. Проблема только в том, что, если Raspi заметит нехватку энергии, он сбросит частоту процессора, а ты увидишь значок молнии в правом верхнем углу экрана. В это же время может произойти останов жесткого диска и обесточивание периферии. Стоит озаботиться покупкой хорошего зарядника и microUSB-кабеля, нередко проблема недостатка питания именно в нем.

Не буду в подробностях расписывать процесс установки ОС на Raspberry (об этом и так рассказывают на каждом углу). Скажу лишь, что я рекомендую использовать официальный дистрибутив Raspbian (для гарантии того, что все работает как надо) и что сам процесс установки, по сути, сводится к скачиванию образа ОС и его заливке на SD-карту. В Linux это делается в две команды:

$ wget https://downloads.raspberrypi.org/raspbian_latest -O raspbian_latest.zip
$ unzip -p 2018-04-18-raspbian-stretch.zip | sudo dd of=/dev/sdX bs=4M conv=fsync

Здесь /dev/sdX — это SD-карта, реальное имя можно узнать с помощью команды lsblk или dmesg сразу после подключения карты памяти.

Вставляем карточку в Raspberry Pi, дожидаемся загрузки рабочего стола, подключаемся к сети Wi-Fi. Запускаем конфигуратор raspi-config из консоли:

$ sudo raspi-config

И включаем SSH-сервер: Interfacing options -> SSH -> Yes.

С этого момента клавиатура и мышь нам больше не нужны. Все, что нужно, мы сможем сделать, подключившись к Raspi с помощью SSH.

Рабочий стол Raspberry Pi
Рабочий стол Raspberry Pi
 

Фильмы и YouTube

Главная задача мультимедийной приставки — проигрывать видео. Для Raspberry Pi доступны различные плееры, но почти все они имеют проблемы с воспроизведением видео с высоким разрешением. Проще говоря, они не умеют декодировать видео с помощью аппаратного ускорителя и делают это на центральном процессоре, который любит тормозить.

Но есть исключение — omxplayer. Он был создан разработчиками Kodi, чтобы убедиться в способности Raspberry Pi к декодированию видео перед началом портирования самого мультимедийного комбайна. Omxplayer без всяких проблем переваривает HD и Full HD видео, но управляется исключительно из консоли. Другими словами, чтобы запустить воспроизведение, тебе придется сделать так:

$ omxplayer /путь/к/видео.avi

Чтобы выбрать аудиовыход (HDMI или выход на самом Raspi), используй опцию -o:

$ omxplayer -o local /путь/к/видео.avi

Для управления воспроизведением используй клавиши: пробел — пауза, +/- — громкость, стрелки — перемотка.

Считаешь это удобным? Я тоже нет, поэтому предлагаю использовать omxplayer в связке с приложением Raspicast для Android. Это клиент для Raspberry Pi и omxplayer, позволяющий удаленно включать любые видео, хранящиеся на жестком диске, и даже видео с YouTube.

Установи приложение на свой смартфон, укажи IP-адрес Raspberry Pi, а также имя и пароль для подключения к SSH. Далее ты можешь либо использовать встроенный в приложение файловый браузер для выбора видео, либо отправить любое видео с YouTube: запускаешь YouTube на телефоне, выбираешь видео, нажимаешь кнопку «Поделиться» и выбираешь в списке Cast (Raspicast).

Видео можно либо запустить немедленно, либо добавить в плей-лист (для этого надо выбрать Queue (Raspicast) в меню «Поделиться»). К сожалению, стримы YouTube не поддерживаются, зато поддерживаются плей-листы, их можно отправлять в Raspicast целиком, а он добавит их в очередь.

Уже запущенным omxplayer можно управлять через SSH. Для этого понадобится скрипт dbuscontrol. У него достаточно интуитивное управление:

$ dbuscontrol.sh status
$ dbuscontrol.sh pause
$ dbuscontrol.sh togglesubtitles
Raspicast умеет играть видео с жесткого диска и с YouTube

Raspicast умеет играть видео с жесткого диска и с YouTube

Raspicast умеет играть видео с жесткого диска и с YouTube
 

YouTube: вариант второй, глючный

На самом деле Raspberry Pi таки умеет воспроизводить видео в браузере на приемлемой скорости. Но есть один нюанс: для этого необходимо активировать драйвер OpenGL, который работает, мягко говоря, не совсем стабильно. К примеру, ты можешь получить графические артефакты на экране, неустойчивую работу системы или вообще отказ загрузки. Если это не пугает, тогда выполни следующие действия.

1. Добавь в файл /boot/config.txt такие строки (192 — количество отведенной для видеоадаптера памяти):

dtoverlay=vc4-kms-v3d
gpu_mem=192

2. Обнови фирмварь и перезагрузись:

$ sudo rpi-update

3. Скачай скрипт chromium-mod.sh и запусти:

$ chmod +x chromium-mod.sh
$ sudo ./chromium-mod.sh

Он изменит флаги запуска Chromium таким образом, чтобы он использовал аппаратное ускорение.

Теперь запусти Chromium, активируй плагин h264ify (он уже установлен) и попробуй включить видео на YouTube. Если, как и прежде, наблюдаются тормоза, стоит проверить, что аппаратное ускорение действительно было активировано. Для этого открой chrome://gpu.

Кстати, в Quake 3 теперь тоже можно играть.

Даже если видео заработает, загрузку браузера ты все равно будешь ждать несколько минут
Даже если видео заработает, загрузку браузера ты все равно будешь ждать несколько минут
 

Музыка

Раз уж мы решили использовать Raspberry Pi в качестве единого мультимедийного центра, то логично установить на него аудиоплеер с удаленным управлением. На эту роль лучше всего подходит MPD (Music Player Daemon).

Мы запустим его на Raspberry Pi так, чтобы он постоянно висел в фоне и был готов играть музыку. А на ноутбук, домашний комп и смартфон установим MPD-клиент, с помощью которого и будем выбирать и запускать музыку.

Устанавливаем:

$ sudo apt install mpd

Скопируем дефолтовый конфиг:

$ mkdir .config/mpd
$ cp /etc/mpd.conf .config/mpd/

Изменим несколько строк:

## Каталог с музыкой
music_directory /media/pi/Elements/download
## Каталог с плей-листами
playlist_directory /media/pi/Elements/playlists
## Пользователь, от имени которого будет работать демон
user "pi"
## Слушаем подключения на всех адресах
bind_to_address "0.0.0.0"

В данном примере я использовал /media/pi/Elements/download в качестве каталога с музыкой. Это каталог download на диске WD Elements, подключенном по USB. Если ты используешь флешку или жесткий диск, он также будет подключен куда-то к /media/pi, но, естественно, под другим именем.

Чтобы не иметь заморочек с правами доступа, нам нужно запускать MPD как пользовательский процесс. Для этого необходимо отключить системный сервис MPD и создать пользовательский. Первая задача выполняется так:

$ sudo systemctl stop mpd.socket
$ sudo systemctl disable mpd.socket

Чтобы решить вторую, создадим каталог для пользовательских сервисов SystemD:

$ mkdir -p .config/systemd/user/

В нем создаем файл mpd.service следующего содержания:

[Unit]
Description=Music Player Daemon

[Service]
ExecStart=/usr/bin/mpd --no-daemon

[Install]
WantedBy=default.target

Сохраняем, активируем и запускаем:

$ systemctl --user enable mpd.service
$ systemctl --user start mpd.service

Теперь MPD будет автоматически запускаться от имени пользователя после загрузки.

Клиентов для MPD существует множество для самых разных платформ, включая Linux, Windows, macOS, Android и iOS. Лично я предпочитаю использовать консольный ncmpc на ноутбуке с Linux и MPD Control на Android.

Да, чуть не забыл — MPD не умеет подхватывать файлы сразу. Чтобы он их увидел, необходимо обновить базу композиций. Это можно сделать с помощью соответствующей кнопки или хоткея в клиенте.

Ncmpc: консольный клиент MPD
Ncmpc: консольный клиент MPD
 

Торренты

Наш Raspberry Pi теперь умеет играть видео и аудио с жесткого диска, но где брать это самое аудио и видео? Конечно же, в торрент-сетях! Нет, я не про пиратство, я про чиптюны и образовательное видео.

С торрентами мы поступим точно так же, как с музыкой. А именно: установим демон, который будет качать/раздавать файлы, но при этом управляться извне, с того же смартфона или ноутбука.

Лучше всего на эту роль подойдет transmission-daemon. Так что устанавливаем:

$ sudo apt install transmission-daemon

Как и в случае с MPD, сразу отключаем системный сервис:

$ sudo systemctl stop transmission-daemon.service
$ sudo systemctl disable transmission-daemon.service

Копируем дефолтовые конфиги:

$ sudo cp -r /etc/transmission-daemon /home/pi/.config/
$ sudo chown -R user_name /home/pi/.config/transmission-daemon

Открываем файл ~/pi/.config/transmission-daemon/settings.json и меняем следующие строки:

"rpc-authentication-required": false,
"rpc-whitelist": "127.0.0.*,192.168.31.*",
"rpc-whitelist-enabled": true,

"download-dir": "/media/pi/Elements/download",
"incomplete-dir": "/media/pi/Elements/download",

В первых трех строках мы отключаем аутентификацию (в домашней сети она не нужна) и указываем подсети, из которых можно будет подключиться к Transmission. Замени 192.168.31.* на свою домашнюю сеть. Последние две строки — каталог загрузки.

Рекомендую также установить дневные лимиты на скорость загрузки/отдачи данных. Это нужно, чтобы Transmission загружал канал только по ночам, а днем не мешал другим юзерам сети.

Следующие настройки включают ограничение в 100 Кбайт/с c 6 утра до 11 вечера (время задается в минутах):

"alt-speed-enabled": true,
"alt-spee-d-down": 100,
"alt-speed-up": 100,
"alt-speed-time-enabled": true,
"alt-speed-time-begin": 360,
"alt-speed-time-end": 1380,
"alt-speed-time-day": 127,

Опять же, как и в случае с MPD, нам нужен пользовательский сервис для запуска Transmission. Создадим файл ~/.config/systemd/user/transmissiond.service с такими строками:

[Unit]
Description=Transmission

[Service]
ExecStart=/usr/bin/transmission-daemon -f --config-dir /home/pi/.config/transmission-daemon/

[Install]
WantedBy=default.target

Активируем и запустим сервис:

$ systemctl --user enable transmissiond.service
$ systemctl --user start transmissiond.service

Для управления Transmission можно взять один из официальных клиентов или любой другой на твой вкус. Я использую transmission-remote-gtk на ноутбуке и Transmission Remote на смартфоне.

Управляем торрент-клиентом со смартфона

Управляем торрент-клиентом со смартфона

Управляем торрент-клиентом со смартфона
 

Ретроигры

Эмуляция старых приставок — одна из тех вещей, с которыми новые Raspberry Pi справляются лучше всего. Есть люди, которые покупают Raspi, ставят на него дистрибутив RetroPie, подключают джойстики и используют исключительно в качестве игровой приставки.

Ты можешь пойти тем же путем, но имей в виду, что RetroPie — специализированный дистрибутив, который загружается либо в интерфейс RetroArch для запуска игр, либо в Kodi для просмотра фильмов и прослушивания музыки.

С другой стороны, никто не запрещает тебе остаться на текущем дистрибутиве и просто установить в него тот самый интерфейс RetroArch для запуска старых игр (по сути, это обертка над эмуляторными движками). Он есть в репозитории Raspbian, но лучше взять преднастроенный из RetroPie.

Итак, для начала клонируем репозиторий RetroPie:

$ sudo apt-get install git lsb-release
$ git clone --depth=1 https://github.com/RetroPie/RetroPie-Setup.git

Запустим инсталлятор:

$ cd RetroPie-Setup
$ chmod +x retropie_setup.sh
$ sudo ./retropie_setup.sh

Нас интересует всего один пункт: Manage Packages -> Core -> retroarch. Выбираем и устанавливаем.

Устанавливаем RetroArch
Устанавливаем RetroArch

Запускаем RetroArch:

$ /opt/retropie/emulators/retroarch/bin/retroarch

Для начала настроим джойстик. Идем в Settings -> Input -> Input User 1 Binds. Как и в любом эмуляторе, выбираем нужную кнопку и нажимаем ее на джойстике. По умолчанию RetroArch эмулирует универсальный джойстик RetroPad, расположение кнопок на котором такое же, как на джойстике SNES.

Также сразу включаем комбинацию для быстрого выхода в меню: Menu Toggle Gamepad Combo -> выбираем Start + Select или любую другую комбинацию на свой вкус.

Далее необходимо установить движки эмуляции. Переходим на главный экран, затем Load Core -> Download core... Нас интересуют следующие движки:

  • fceumm — NES;
  • genesis_plus_gx — Sega Mega Drive 2;
  • snes9x2010 — Super Nintendo;
  • pcsx_rearmed — Sony PlayStation 1.

И последнее. Переходим в Settings -> Directory -> File Browser и выбираем каталог с ROM’ами.

Это все. Теперь, если, например, ты хочешь поиграть в «Сегу», переходи в Load Core -> genesis_plus_gx, далее Load Content и выбирай игру.

Ах да. RetroArch поддерживает ачивки для множества игр. Регистрируйся на retroachivements, затем иди в меню Settings -> Achivements и вбивай свои логин-пароль. RetroArch сам активирует систему ачивок, когда обнаружит загрузку поддерживаемого ROM’а.

Интерфейс RetroArch
Интерфейс RetroArch
 

Выводы

Raspberry Pi не мультимедийный центр и никогда и не должен был быть им. Это просто маленький компьютер, который умеет немного фильмов, музыки и ретроигр. Но именно этим он и хорош, ведь ты волен сам придумывать ему применение. Не нравится Kodi, как мне, — используй SSH и голый omxplayer. Установи MPD и включай музыку хоть с другого конца города.

6 комментариев

  1. Аватар

    and7ey

    29.10.2018 в 14:26

    Kodi + LibreELEC — вообще никаких проблем на третьей малинке. Работает в разы лучше и стабильнее китайских свистков.

  2. Аватар

    G_rave

    29.10.2018 в 21:38

    Твое извращение начинается на этапе управления Kodi мышкой. Установи yatse. Через него можно отправлять любое видео, в том числе ютуб, обычные http ссылки на файлы и контент с телефона.
    Если хочешь смотреть с ноута, расшарь папку на сеть(самбу коди подхватывает без бубнов)
    Как вариант, просто используй обычный пульт от ТВ через CEC
    Все плагины, в частности yotube, работают идеально.

    У меня медиатека вся лежит на винте, подключённом к роутеру и расшаренном на сеть. С такой связкой, я даже не знал, что малинка отключает перемирию при низком питании.
    К тому же, это снизит потребление питания

    Ставить голый расбиан+плеер, без пригодной на то оболочки, это жутко неудобно

  3. Аватар

    Demitrij

    30.10.2018 в 22:23

    +1 парни. Я правда собрал OSMC/Kodi + RetroPie на загрузчике berryboot. По факту 2 ОС на одной 16 Гб флэшке.
    Youtube приложение иногда подглючивает, так что выкручиваюсь через приложение AllConnect под Android по протоколу Airplay.

  4. Аватар

    pv5hv

    26.04.2019 в 08:18

    для музыки raspberry pi + usb flashdrive 8gb + volumio2 = <3
    и никаких танцев с бубнами.

Оставить мнение