За несколько лет существования Raspberry Pi было написано большое количество инструкций, как превратить его в домашний мультимедиацентр. Вот только классический мультимедийный центр из него настолько плохой, что проигрывает даже китайским HDMI-свисткам. Точнее, так кажется, пока вы не начинаете мыслить, как линуксоид.
Первая идея большинства людей, которые покупают Raspberry Pi, чтобы сделать из него медиацентр, примерно следующая: подключаем к «малинке» жесткий диск или флешку с фильмами и музыкой, подключаем пульт с гироскопом, устанавливаем мультимедийный комбайн Kodi и наслаждаемся фильмами, YouTube, ТВ и радио.
Это абсолютно логичное решение, которое вы будете проклинать уже через два часа. Kodi — прекрасная оболочка для мультимедийной приставки, но не лучшим образом оптимизированная для Raspberry Pi. Иной раз ее приходится перезапускать, курсор мыши во время просмотра видео дико тормозит, а некоторые функции не работают.
Плюс ко всему вы, конечно же, столкнетесь с неработоспособностью половины опубликованных в местном репозитории плагинов. Хотите посмотреть YouTube — фиг вам, плагин работает один раз через десять, послушать радио можно, но придется еще найти работающий плагин. ТВ? Даже не пытайтесь.
2018 год, стримы, облака, Netflix, а вы сидите и смотрите видосики с жесткого диска с тормозящим курсором. А если попробуете открыть YouTube в браузере, то увидите такое слайд-шоу, что можно на конференциях выступать.
Мыслим в обратную сторону
Raspberry Pi кажется настолько непригодным к использованию в качестве ТВ-приставки, что я мог бы порекомендовать купить вместо него настоящую ТВ-приставку (типа Nvidia Shield) или даже китайский HDMI-свисток. Но я не буду этого делать, потому что у Raspberry Pi есть два преимущества:
- Это мини-ПК на базе Linux, с которым можно сделать все что угодно (в отличие от залоченных приставок и приставок на базе Android).
- У Raspberry Pi большое комьюнити и множество разработчиков.
Не стоит пытаться превратить Raspberry Pi в классическую приставку, управляемую с пульта. Его нужно превратить в сервер, которым вы сможете рулить с ноутбука или смартфона. Захотели посмотреть YouTube — взяли телефон, запустили аппликуху, выбрали видео и нажали плей. Хотие музыку — у вас на телефоне есть виджет. Торренты? Скачиваете файлик на ноутбук и с помощью удаленного торрент-клиента закидываете на Raspi.
Что нужно для создания медиацентра из Raspberry Pi
Итак, нам потребуются следующие вещи:
- Raspberry Pi 3.
- SD-карта минимум на 8 Гбайт, минимум 10-го класса.
- Внешний жесткий диск для хранения музыки и фильмов.
- Клавиатура и мышь (нужны только при начальной настройке и во время неполадок).
- USB-зарядник на 2,5 А и microUSB-кабель.
Raspberry Pi без проблем дружит с Bluetooth-клавиатурами и мышами, но работать они будут, естественно, только если загрузка ОС прошла успешно. В качестве мыши очень удобно использовать пульт с гироскопом (на Aliexpress такие стоят 3–5 долларов). Он эмулирует движения мыши с помощью наклонов.
USB-зарядник подойдет любой, даже меньше чем на 2,5 А. Проблема только в том, что, если Raspi заметит нехватку энергии, он сбросит частоту процессора, а вы увидите значок молнии в правом верхнем углу экрана. В это же время может произойти останов жесткого диска и обесточивание периферии. Стоит озаботиться покупкой хорошего зарядника и microUSB-кабеля, нередко проблема недостатка питания именно в нем.
РЕКОМЕНДУЕМ:
Дешевый хаб для из Raspberry Pi
Не буду в подробностях расписывать процесс установки ОС на Raspberry (об этом и так рассказывают на каждом углу). Скажу лишь, что я рекомендую использовать официальный дистрибутив Raspbian (для гарантии того, что все работает как надо) и что сам процесс установки, по сути, сводится к скачиванию образа ОС и его заливке на SD-карту. В Linux это делается в две команды:
1 2 |
$ 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 из консоли:
1 |
$ sudo raspi-config |
И включаем SSH-сервер: Interfacing options -> SSH -> Yes.
С этого момента клавиатура и мышь нам больше не нужны. Все, что нужно, мы сможем сделать, подключившись к Raspi с помощью SSH.
Фильмы и YouTube на Raspberry Pi
Главная задача мультимедийной приставки — проигрывать видео. Для Raspberry Pi доступны различные плееры, но почти все они имеют проблемы с воспроизведением видео с высоким разрешением. Проще говоря, они не умеют декодировать видео с помощью аппаратного ускорителя и делают это на центральном процессоре, который любит тормозить.
Но есть исключение — omxplayer. Он был создан разработчиками Kodi, чтобы убедиться в способности Raspberry Pi к декодированию видео перед началом портирования самого мультимедийного комбайна. Omxplayer без всяких проблем переваривает HD и Full HD видео, но управляется исключительно из консоли. Другими словами, чтобы запустить воспроизведение, вам придется сделать так:
1 |
$ omxplayer /путь/к/видео.avi |
Чтобы выбрать аудиовыход (HDMI или выход на самом Raspi), используйте опцию -o:
1 |
$ 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. У него достаточно интуитивное управление:
1 2 3 |
$ dbuscontrol.sh status $ dbuscontrol.sh pause $ dbuscontrol.sh togglesubtitles |
YouTube: вариант второй, глючный
На самом деле Raspberry Pi таки умеет воспроизводить видео в браузере на приемлемой скорости. Но есть один нюанс: для этого необходимо активировать драйвер OpenGL, который работает, мягко говоря, не совсем стабильно. К примеру, вы можете получить графические артефакты на экране, неустойчивую работу системы или вообще отказ загрузки. Если это не пугает, тогда выполните следующие действия.
- Добавьте в файл
/boot/config.txt такие строки (192 — количество отведенной для видеоадаптера памяти):
12dtoverlay=vc4-kms-v3dgpu_mem=192
- Обновите фирмварь и перезагрузитесь:
1$ sudo rpi-update - Скачайте скрипт chromium-mod.sh и запустите:
12$ chmod +x chromium-mod.sh$ sudo ./chromium-mod.sh
Он изменит флаги запуска Chromium таким образом, чтобы он использовал аппаратное ускорение.
Теперь запустите Chromium, активируйте плагин h264ify (он уже установлен) и попробуйте включить видео на YouTube. Если, как и прежде, наблюдаются тормоза, стоит проверить, что аппаратное ускорение действительно было активировано. Для этого открой chrome://gpu.
Кстати, в Quake 3 теперь тоже можно играть.
Музыка на Raspberry Pi
Раз уж мы решили использовать Raspberry Pi в качестве единого медиацентра, то логично установить на него аудиоплеер с удаленным управлением. На эту роль лучше всего подходит MPD (Music Player Daemon).
Мы запустим его на Raspberry Pi так, чтобы он постоянно висел в фоне и был готов играть музыку. А на ноутбук, домашний комп и смартфон установим MPD-клиент, с помощью которого и будем выбирать и запускать музыку.
Устанавливаем:
1 |
$ sudo apt install mpd |
Скопируем дефолтовый конфиг:
1 2 |
$ mkdir .config/mpd $ cp /etc/mpd.conf .config/mpd/ |
Изменим несколько строк:
1 2 3 4 5 6 7 8 |
## Каталог с музыкой 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 и создать пользовательский. Первая задача выполняется так:
1 2 |
$ sudo systemctl stop mpd.socket $ sudo systemctl disable mpd.socket |
Чтобы решить вторую, создадим каталог для пользовательских сервисов SystemD:
1 |
$ mkdir -p .config/systemd/user/ |
В нем создаем файл mpd.service следующего содержания:
1 2 3 4 5 6 7 8 |
[Unit] Description=Music Player Daemon [Service] ExecStart=/usr/bin/mpd --no-daemon [Install] WantedBy=default.target |
Сохраняем, активируем и запускаем:
1 2 |
$ systemctl --user enable mpd.service $ systemctl --user start mpd.service |
Теперь MPD будет автоматически запускаться от имени пользователя после загрузки.
Клиентов для MPD существует множество для самых разных платформ, включая Linux, Windows, macOS, Android и iOS. Лично я предпочитаю использовать консольный ncmpc на ноутбуке с Linux и MPD Control на Android.
Да, чуть не забыл — MPD не умеет подхватывать файлы сразу. Чтобы он их увидел, необходимо обновить базу композиций. Это можно сделать с помощью соответствующей кнопки или хоткея в клиенте.
Торренты на Raspberry Pi
Наш Raspberry Pi теперь умеет играть видео и аудио с жесткого диска, но где брать это самое аудио и видео? Конечно же, в торрент-сетях! Нет, я не про пиратство, я про чиптюны и образовательное видео.
С торрентами мы поступим точно так же, как с музыкой. А именно: установим демон, который будет качать/раздавать файлы, но при этом управляться извне, с того же смартфона или ноутбука.
Лучше всего на эту роль подойдет transmission-daemon. Так что устанавливаем:
1 |
$ sudo apt install transmission-daemon |
Как и в случае с MPD, сразу отключаем системный сервис:
1 2 |
$ sudo systemctl stop transmission-daemon.service $ sudo systemctl disable transmission-daemon.service |
Копируем дефолтовые конфиги:
1 2 |
$ 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 и меняем следующие строки:
1 2 3 4 5 6 |
"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 вечера (время задается в минутах):
1 2 3 4 5 6 7 |
"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 с такими строками:
1 2 3 4 5 6 7 8 |
[Unit] Description=Transmission [Service] ExecStart=/usr/bin/transmission-daemon -f --config-dir /home/pi/.config/transmission-daemon/ [Install] WantedBy=default.target |
Активируем и запустим сервис:
1 2 |
$ systemctl --user enable transmissiond.service $ systemctl --user start transmissiond.service |
Для управления Transmission можно взять один из официальных клиентов или любой другой на твой вкус. Я использую transmission-remote-gtk на ноутбуке и Transmission Remote на смартфоне.
Ретроигры на Raspberry Pi
Эмуляция старых приставок — одна из тех вещей, с которыми новые Raspberry Pi справляются лучше всего. Есть люди, которые покупают Raspi, ставят на него дистрибутив RetroPie, подключают джойстики и используют исключительно в качестве игровой приставки.
Вы можете пойти тем же путем, но имейте в виду, что RetroPie — специализированный дистрибутив, который загружается либо в интерфейс RetroArch для запуска игр, либо в Kodi для просмотра фильмов и прослушивания музыки.
РЕКОМЕНДУЕМ:
Файловый сервер с блокировкой рекламы из Raspberry Pi и Pi Hole
С другой стороны, никто не запрещает вам остаться на текущем дистрибутиве и просто установить в него тот самый интерфейс RetroArch для запуска старых игр (по сути, это обертка над эмуляторными движками). Он есть в репозитории Raspbian, но лучше взять преднастроенный из RetroPie.
Итак, для начала клонируем репозиторий RetroPie:
1 2 |
$ sudo apt-get install git lsb-release $ git clone --depth=1 https://github.com/RetroPie/RetroPie-Setup.git |
Запустим инсталлятор:
1 2 3 |
$ cd RetroPie-Setup $ chmod +x retropie_setup.sh $ sudo ./retropie_setup.sh |
Нас интересует всего один пункт: Manage Packages -> Core -> retroarch. Выбираем и устанавливаем.
Запускаем RetroArch:
1 |
$ /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’а.
Выводы
Raspberry Pi не мультимедийный центр и никогда и не должен был быть им. Это просто маленький компьютер, который умеет немного фильмов, музыки и ретроигр. Но именно этим он и хорош, ведь вы можете сам придумывать ему применение. Не нравится Kodi, как мне, — используйте SSH и голый omxplayer. Установите MPD и включайте музыку хоть с другого конца города.