Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
mr.save

Малина с сахаром. Рецепт не совсем обычного медиацентра из Raspberry Pi

Recommended Posts

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

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

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

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

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

 

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

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

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

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

 

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

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

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

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

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

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

Фильмы и YouTube

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

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

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

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

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

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

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

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

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

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

Музыка

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

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

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

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

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

Торренты

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

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

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

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

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

Ретроигры

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

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

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

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

Запускаем 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 и включай музыку хоть с другого конца города.

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...