User Tools

Site Tools


doc:appunti:software:kodi_installation

Installazione di Kodi su Debian 9

Kodi è il nuovo nome di XBMC, a partire dalla versione 14. Vedere le vecchie pagine XBMC Media Center e Raspberry PI mediacenter con OpenELEC, perché gran parte degli appunti restano validi.

Su Debian 9 Stretch

Si è preferito installare il pacchetto da deb-multimedia.org piuttosto che quello ufficiale fornito da Debian, sia perché è una versione più recente (17.6 invece di 17.1) sia per gestire al meglio le dipendenze da codec proprietari che in Debian non ci sono, ma sono presenti in Deb-Multimedia.

La pacchettizzazione Debian di Kodi dipende da xserver-xorg, tuttavia non abbiamo installato un login manager (lightdm, gdm, o simili) quindi l'host si avvia con il login su console testuale.

ATTENZIONE :!: In configurazioni più recenti, ad esempio RaspiOS basato su Debian 10.8 Buster che installa Kodi 18.7 Leia, il pacchetto Kodi si può installare in modo del tutto diverso, senza xserver-xorg. Vedere Kodi on a Raspberry Pi NAS.

Con Debian 9 Stretch è stato necessario installare i seguenti pacchetti e le loro dipendenze:

  • kodi
  • kodi-standalone
  • libgl1-mesa-dri

Altri pacchetti consigliati:

  • kodi-peripheral-joystick - Necessario se si vuole utilizzare un gamepad come telecomando.
  • kodi-eventclients-kodi-send - Contiene il tool kodi-send necessario per pilotare Kodi da riga di comando.

La formula per avviare kodi suggerita da kodi.wiki è la seguente:

/usr/bin/xinit /usr/bin/dbus-launch --exit-with-session \
    /usr/bin/kodi-standalone -- :0 -nolisten tcp vt7

Senza il pacchetto libgl1-mesa-dri l'avvio di xinit/kodi falliva, lasciando nel kodi_crashlog-*.log questo errore:

ERROR: Failed to find matching visual

Per consentire all'utente non privilegiato kodi (creato apposta) di avviare Kodi è stato necessario modificare il file /etc/X11/Xwrapper.config, mettendo le righe:

allowed_users=anybody
needs_root_rights=yes

In alcuni post viene consigliato anche di eseguire dpkg-reconfigure x11-common. Senza queste modifiche l'esecuzione di xinit/kodi da parte dell'utente non-root dava il seguente errore del server X:

Fatal server error:
(EE) xf86OpenConsole: Cannot open virtual console 7 (Permission denied)

L'utente kodi appartiene ai gruppi di sistema audio, video e plugdev. Il pacchetto policykit-1 è installato, ma non sono state fatte personalizzazioni. In queste condizioni il menu Power di Kodi consente il reboot e lo spengimento anche all'utente non privilegiato.

L'esecuzione xinit/kodi funziona a questo punto da utente non privilegiato, sia da console locale che da terminale remoto. Per avviare il servizio kodi al bootstrap si è creata una unit systemd:

[Unit]
Description = Kodi Media Center

# if you don't need the MySQL DB backend, this should be sufficient
After = systemd-user-sessions.service network.target sound.target

# if you need the MySQL DB backend, use this block instead of the previous
# After = systemd-user-sessions.service network.target sound.target mysql.service
# Wants = mysql.service

[Service]
User = kodi
Group = kodi
Type = simple
ExecStart = /usr/bin/xinit /usr/bin/dbus-launch --exit-with-session /usr/bin/kodi-standalone -- :0 -nolisten tcp vt7
Restart = always
RestartSec = 15

[Install]
WantedBy = multi-user.target

e quindi si è installato, abilitato e avviato il servizio:

systemctl daemon-reload
systemctl enable kodi.service
systemctl start kodi.service

Su Debian 7 Wheezy

Si installa facilmente su Debian Wheezy, basta aggiungere i repository:

deb  https://people.debian.org/~rbalint/ppa/xbmc-ffmpeg xbmc-ffmpeg-wheezy-backports/
deb  http://http.debian.net/debian wheezy-backports main contrib non-free

Seguire le istruzioni del repository, in sintesi:

apt-get install debian-keyring
apt-get install apt-transport-https
gpg --keyring /usr/share/keyrings/debian-keyring.gpg -a --export 21E764DF | sudo apt-key add -

Quindi installare i seguenti pacchetti:

  • alsa-base e alsa-utils per il supporto audio.
  • x11-common e xinit per poter avviare l'ambiente grafico. Non serve un ambiente desktop completo.
  • kodi e kodi-bin il software media center vero e proprio.
  • upower e acpi-support per gestire lo spengimento/reboot dai menu di Kodi (vedere XBMC, altre impostazioni).

Quando serve una dipendenza necessariamente dai bacports:

apt-get -t wheezy-backports install libtag1c2a

Si crea un utente kodi per mandare in esecuzione il software omonimo, deve appartenere ai vari gruppi Debian quali audio, video, plugdev, ecc.

Script start/stop

Lo script per avviare Kodi automaticamente al bootstrap è stato preso dalla pagina Autostart Kodi for Linux, opportunamente aggiornato per il passaggio di nome XBMC → Kodi.

Aggiornamento delle miniature

Per ogni video è possibile visualizzare una miniatura personalizzata al posto di quella creata automaticamente; basta mettere un file JPG oppure PNG nella stessa directory del file video, chiamandolo con lo stesso nome e l'estensione .tbn.

Queste immagini vengono salvate in una cache e in un database, quindi aggiornarle non è semplice. Un metodo drastico è eliminare il file $HOME/.kodi/userdata/Database/Textures13.db e i file in $HOME/.kodi/userdata/Thumbnails/.

Pare che esista uno script più efficace: Texture Cache Maintenance utility.

Catturare una schermata di Kodi

È possibile catturare la schermata corrente di Kodi eseguendo una riga di comando in una shell dell'host stesso. Si deve installare il pacchetto Debian kodi-eventclients-kodi-send e quindi eseguire:

kodi-send --action="TakeScreenshot"

Alla prima esecuzione, nell'interfaccia Kodi, compare la richiesta di directory destinazione, dove verrà salvato il file PNG. Le richeiste successive utilizzeranno la stessa directory (fino al riavvio successivo).

Library data from local .nfo files

NFO files

  • Video ⇒ File ⇒ Aggiungi Video…
  • Imposta contenuto
    • Questa directory contiene: Film
      • Scegli provider di informazioni: Local information only

FIXME Something is not working as wanted:

  • How to override directory names? The folder.jpg is used as thumbnail, but the name is just the directory name.
  • Yatse problem in file browse mode: directories are hidden by the thumbnail of one of the files contained into.

File view, but with library data

  • Impostazioni
    • Impostazioni Media
      • Filmati
        • Sostituisci nomi file con titoli Librerie

The year 1601 problem

We incurred into a problem with movie date in Yatse, the Android application to control Kodi remotely: every movie was presented as released in year 1601. It turned out that you must use the <premiered> tag into the .nfo file, instead of the <year> one. The tag must be in the ISO format YYYY-MM-DD, otherwise it will be not parsed.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- created on 2017-12-30 15:09:33 - by MediaManager -->
<movie>
    <title>L'era glaciale 3 - L'alba dei dinosauri</title>
    <sorttitle>era glaciale 3</sorttitle>
    <set>Era Glaciale</set>
    <genre>Animazione</genre>
    <premiered>2009-01-01</premiered>
</movie>

Layout tastiera italiana

On-Screen keyboard

Stranamente Kodi 14.0 su Debian Wheezy non include il layout italiano per la tastiera on-screen (cioè quella utilizzabile anche con il telecomando o il mouse). I vari layout sono definiti nel file /usr/share/kodi/system/keyboardlayouts.xml e pare che non sia possibile creare un file personalizzato con layout aggiuntivi (almeno con la versione 14 Helix). Questo è un problema perché se si modifica il file, questo sarà sostituito durante un aggiornamento di Kodi.

Ad ogni modo si deve aggiungere una sezione del tipo:

  <layout name="Italian QWERTY">
    <keyboard>
      <row>1234567890'ì</row>
      <row>qwertyuiopè+</row>
      <row>asdfghjklòàù</row>
      <row>zxcvbnm,.-</row>
    </keyboard>
    <keyboard modifiers="shift">
      <row>1234567890?^</row>
      <row>QWERTYUIOPé*</row>
      <row>ASDFGHJKLç°§</row>
      <row>ZXCVBNM;:_</row>
    </keyboard>
    <keyboard modifiers="symbol,shift+symbol">
      <row>/\|@€#[]&lt;&gt;`~</row>
      <row>!"£$%&amp;()='?</row>
      <row>&lt;&gt;,.-+*_^§ç</row>
    </keyboard>
  </layout>

Quindi dall'interfaccia Kodi si seleziona quali layout tenere a disposizione (se sono più di uno sarà possibile cambiare da uno all'altro durante l'input da tastiera virtuale):

  • Sistema, Impostazioni, Aspetto
    • Livello impostazioni ⇒ Standard (o superiore)
    • Internazionale ⇒ Layout della tastiera

Tastiera hardware

Kodi 14.0 su Debian Wheezy ha un bug per cui la tastiera localizzata non funziona: quando si digita un input con la tastiera fisica nell'interfaccia di Kodi, è attivo sempre il layout US. Questo nonostante che il sistema sia configurato correttamente (la console ad esempio produce le lettere accentate come deve essere):

  • dpkg-reconfigure locales
  • dpkg-reconfigure keyboard-configuration

Neanche creando un file /etc/X11/xorg.conf.d/00-keyboard.conf con l'opportuna sezione InputClass e l'opzione XkbLayout si ottiene la localizzazione (eppure la direttiva viene caricata, come si può verificare da /var/log/Xorg.0.log).

Ancor più stranamente: se da una terminale virtuale (Alt+F1) si modifica l'impostazione della tastiera, allora Kodi inizia a funzionare correttamente, senza neanche riavviarlo:

export DISPLAY=:0
setxkbmap it

Il tutto è molto strano, poichè le impostazioni mostrate con setxkbmap -print -verbose 10 non cambiano prima e dopo aver dato il comando. Tutto sommato pare che il workaround migliore sia quello di impostare un autoexec per Kodi in /home/kodi/.kodi/userdata/autoexec.py:

import os
os.system("setxkbmap it")

Personalizzazione Skin

La skin predefinita di Kodi 17 Krypton si chiama Estuary ed è abbastanza soddisfacente, salvo per la dimensione delle miniature dei video nella modalità Muro (Wall): le immagini sono quadrate e troppo piccole. Nella nostra collezione abbiamo invece preparato tutte le miniature (file .tbn) nel formato 4:3.

È sifficiente modificare alcuni file XML e riavviare Kodi per provare un layout più soddisfacente. La directory che contiene la skin è /usr/share/kodi/addons/skin.estuary/xml/, i file sono:

  • View_500_Wall.xml
  • View_54_InfoWall.xml
  • Includes_Home.xml

Impostazioni Consigliate per Kodi 17

Il nostro utilizzo di Kodi è orientato alle seguenti caratteristiche:

  • Si privilegia la consultazione in modalità file, piuttosto che sfogliare i metadati della library. Questo perché in generale la library organizza i contenuti in modalità piatta (ricerca per genere, anno, tag, ecc.), ma non consente una organizzazione strettamente gerarchica, come invece è naturale nella modalità file.
  • I metadati sono forniti localmente con file .nfo e miniature .tbn, non si prevede di fare lo scraping da siti esterni. Questo perché la qualità e la completezza dei fan-siti è abbastanza modesta per i contenuti in italiano.
  • Non interessa la suddivisione dei video in Movies, TV Shows e Music Videos. Soprattutto la categoria TV Shows impone vincoli e gerarchie molto articolate e stringenti, si preferisce classificare tutto come movie e sfruttare l'organizzazione gerarchica per directory.

Ecco i consigli per una corretta visualizzazione dei contenuti video:

  • Assegnare al file un nome che permetta il corretto ordinamento alfabetico (eventualmente quindi usare un prefisso per l'ordinamento delle serie TV, omettere l'articolo, ecc.). Tale nome può essere usato direttamente anche come <sorttitle> nel file .nfo. Se si preferisce è possibile usare l'underscore al posto degli spazi e solo lettere minuscole, secondo la prassi Unix.
  • Creare il file .nfo per assegnare il <title> al video, con eventuali spazi, ecc. Aggiungere anche l'immagine miniatura in formato JPEG, ma con estensione .tbn.
  • Aggiungere la directory come sorgente video e aggiornare la libreria con il suo contenuto (dal menu contestuale della directory scegliere Scan to library). Se non si esegue questo passaggio non sarà possibile scegliere una delle modalità di visualizzazione di Kodi.
  • Nella visualizzazione Video si consiglia la modalità Wall con l'ordinamento per nome file. Come etichetta sarà mostrato non il nome del file, ma il titolo contenuto nel file .nfo (vede sotto le impostazioni Media settings).

Come metadati da includere nei file .nfo ci è sufficiente assegnare:

  • title
  • sorttitle titolo da usare per l'ordinamento
  • genre
  • premiered data dell'uscita nel formato YYYY-MM-DD
  • showtitle, per le serie TV, il nome della serie
  • tag, per una eventuale ricerca veloce tramite library (es. il nome della serie TV).
  • season, per le serie TV, il numero della stagione
  • episode, per le serie TV, il numero dell'episodio, nella stagione

Kodi ha innumerevoli parametri che possono essere personalizzati, ecco alcuni consigli su cosa impostare dal menu Settings (icona a forma di ingranaggio):

  • System settings ⇒ Addons ⇒ Updates ⇒ Never check for updates
  • Media settings ⇒ General ⇒ Show file extensions (No)
  • Media settings ⇒ Videos ⇒ Extract thumbnails from video files (Yes)
  • Media settings ⇒ Videos ⇒ Replace file names with library titles (Yes)
  • Media settings ⇒ Music⇒ Default provider for album information ⇒ Local information only
  • Media settings ⇒ Music⇒ Default provider for artist information ⇒ Local information only

Apertura automatica di una directory all'avvio

Pare che Kodi 17 supporti il file $HOME/.kodi/userdata/autoexec.py. Vedere gli appunti presi per l'autostart con OpenELEC: pare che siano ancora validi (compreso l'import xbmc e i metodi). Anche il wiki di Kodi ha una pagina a riguardo.

Kodi 17 Cheat Sheet

Vedere Keyboard controls.

Key Function Note
Space Pause
X Stop playback
Enter Player controls (OSD)
- (minus) Volume down
+ (plus) Volume up
C Contextual menu Utile ad esempio per mettere in coda una intera directory.
ESC Previous menu Utile anche per chiudere il menu OSD.
S Shutdown menu Per spengere o riavviare l'host.
T Subtitles Attiva o disattiva i sottotitoli.
A Audio delay Aggiusta la sincronizzazione audio-video.
TAB Fullscreen playback
\ (backslash) Fullscreen mode Fullscreen/windowed mode.
doc/appunti/software/kodi_installation.txt · Last modified: 2023/06/10 16:45 by niccolo