6.1 KiB
Jellyfin HTPC Client & YouTube Receiver
Een snelle, lichtgewicht HTPC client ontworpen voor Linux mini-PC's (x86_64). Integreert met Jellyfin voor het streamen van films/series en biedt volledige ondersteuning voor Yatse en het delen van YouTube video's rechtstreeks vanuit de YouTube mobiele app.
🌟 Belangrijkste Functies
-
Jellyfin Remote Player:
- Registreert zich via WebSocket direct bij de Jellyfin server (
https://thuus.bnhmeijer.nl/jellyfinof lokaal IP). - Verschijnt automatisch als "Cast / Remote Speler" in de Jellyfin app en Yatse.
- Stuurt realtime voortgang, speelduur en hervatting terug naar Jellyfin.
- Registreert zich via WebSocket direct bij de Jellyfin server (
-
Yatse & Kodi Remote Ondersteuning:
- Bevat een geëmuleerde Kodi JSON-RPC server (standaard HTTP poort
8080& WebSocket9090). - Yatse kan de HTPC toevoegen als Kodi mediacenter voor volledige controle: Play/Pause, Seek, Volume, Mute, OSD notificaties.
- Bevat een geëmuleerde Kodi JSON-RPC server (standaard HTTP poort
-
YouTube Delen vanuit de YouTube App:
- Via Yatse: Tik in de YouTube app op Delen
\rightarrowYatse\rightarrowde video speelt direct af op het grote scherm! - Via Web Interface / API: Open
http://<htpc-ip>:8097/op je telefoon om een link te plakken of de speler te bedienen. - Automatische metadata-extractie (titel, uploader, speelduur) en stream extractie via
yt-dlp.
- Via Yatse: Tik in de YouTube app op Delen
-
Hardware-versnelde MPV Video Engine:
- Gestuurd via MPV IPC Unix socket.
- Automatische GPU decodering (
--hwdec=autovoor Intel QuickSync / AMD VA-API / Nvidia NVDEC). - Minimale geheugenvoetprint (< 40MB RAM).
🏗️ Architectuur
flowchart TD
subgraph Mobile ["Telefoon / Tablet"]
YT[YouTube App] -->|Delen naar Yatse| Yatse[Yatse Remote App]
JFApp[Jellyfin Mobiel] -->|Cast naar HTPC| JFSrv[Jellyfin Server]
Browser[Mobiele Browser] -->|Plak YouTube Link| WebAPI[Web Remote :8097]
end
subgraph HTPC ["HTPC (x86_64 Linux)"]
subgraph Remotes
KodiRPC["Kodi JSON-RPC Server (:8080 / :9090)"]
WebAPI
end
subgraph Core ["jellyfin-htpc-client (Python 3.12)"]
JFClient["Jellyfin Client Session (WebSocket)"]
YTParser["YouTube Parser & yt-dlp"]
MPVControl["MPV IPC Controller"]
end
subgraph Playback ["Media Speler"]
MPV["MPV Video Player (GPU / VA-API)"]
end
end
Yatse -->|JSON-RPC| KodiRPC
JFSrv -->|WebSocket Remote Control| JFClient
KodiRPC --> MPVControl
WebAPI --> MPVControl
JFClient --> MPVControl
YTParser --> MPVControl
MPVControl --> MPV
🐳 Lokaal Testen met Docker
Je kunt de client direct lokaal testen met Docker en Docker Compose:
# 1. Start de container (lokaal)
docker compose up -d
# 2. Bekijk de logs
docker compose logs -f
# 3. Open de Web Remote in je browser:
# http://localhost:8097/
#
# 4. Of test Yatse vanaf je telefoon op hetzelfde Wi-Fi netwerk:
# Voeg Kodi toe met het IP-adres van je laptop op poort 8080!
Display / X11 Doorkoppeling (Optioneel):
Als je wilt dat het MPV-videovenster op het scherm van je laptop verschijnt, geef Docker dan eenmalig toegang tot X11:
xhost +local:root
docker compose up -d
Draai je zonder beeldscherm of op een headless server? De client detecteert dit automatisch en valt terug op headless mode (--vo=null --ao=null), of start handmatig met MPV_VO=null docker compose up -d.
📦 Installatie op de HTPC Bare-Metal (Aanbevolen voor TV)
git clone https://git.bnhmeijer.nl/bart/jellyfin-client.git
cd jellyfin-client
chmod +x install.sh
sudo ./install.sh
Het script installeert automatisch de benodigde pakketten (mpv, yt-dlp, python3-venv), maakt /opt/jellyfin-client aan met een virtuele omgeving en installeert de systemd service.
⚙️ Configuratie
Bewerk /etc/jellyfin-client/config.yaml (of config.yaml in de projectmap):
jellyfin:
server_url: "https://thuus.bnhmeijer.nl/jellyfin" # of lokaal: http://10.2.0.4:8096/jellyfin
username: "bart"
password: "jouw_wachtwoord"
client_name: "Jellyfin HTPC Client"
device_name: "HTPC Woonkamer"
device_id: "htpc-woonkamer-01"
player:
mpv_path: "mpv"
ipc_socket: "/tmp/mpv-jellyfin.sock"
hwdec: "auto" # 'auto', 'vaapi' (Intel/AMD) of 'nvdec' (Nvidia)
vo: "gpu"
fullscreen: true
audio_device: "auto"
kodi_rpc:
enabled: true
http_port: 8080 # Poort voor Yatse Kodi-verbinding
ws_port: 9090
web_api:
enabled: true
host: "0.0.0.0"
port: 8097 # Web Remote UI & REST API
📱 Yatse Verbinden & Gebruiken
Optie 1: Als Kodi Speler (Beste ervaring voor YouTube delen)
- Open Yatse op je Android telefoon.
- Ga naar Instellingen
\rightarrowHosts beheren\rightarrow+ (Host toevoegen). - Kies Kodi.
- Vul het IP-adres van je HTPC in en poort
8080. - Yatse detecteert direct de speler.
- YouTube afspelen: Ga in de officiële YouTube app naar een video
\rightarrowdruk op Delen\rightarrowselecteer Yatse\rightarrowde video start direct op je HTPC!
Optie 2: Als Jellyfin Speler
- Voeg in Yatse je Jellyfin server toe (
https://thuus.bnhmeijer.nl/jellyfin). - Tik rechtsboven op het Cast-icoon.
- Selecteer HTPC Woonkamer als afspeeldoel.
- Elke film of serie die je nu kiest in Yatse speelt synchroon af via MPV op de HTPC.
🌐 Web Remote & Directe API
Open op elk apparaat in je netwerk de browser:
http://<htpc-ip>:8097/
Hier kun je een YouTube URL invoeren, op "Play on TV" drukken en speelbediening uitvoeren (Play/Pause, -15s/+15s, Volume).
REST Endpoints
POST /api/play-{"url": "https://www.youtube.com/watch?v=..."}POST /api/playpausePOST /api/stopPOST /api/seek-{"seconds": 15}POST /api/volume-{"volume": 80}GET /api/status
🛠️ Service Beheer
# Service starten en automatisch inschakelen bij opstarten
sudo systemctl enable --now jellyfin-client
# Status en logs bekijken
sudo systemctl status jellyfin-client
sudo journalctl -u jellyfin-client -f
🧪 Tests Uitvoeren
.venv/bin/pytest -v