[ Présentation | Installation  | Utilisation  | Installer une base de donnée locale partagée  | Modifier les genres des films | Extension youtube ]

Mediacenter kodi

Dernière modification 30 septembre 2023

Présentation

On part sur le principe que vous avez installé les bibliothèques de base pour faire de la vidéo.

Cette page présente kodi anciennement connu sous le nom de XBMC, c'est un media player, ou dit autrement un « home theater » soft. En français, on va dire que c'est un logiciel dédié au PC multimédia généralement connecté à une TV. Le site officiel est  http://kodi.tv.

Installation


Préalablement on installera les packages suivants en tapant la commande ci-dessous:

urpmi swig lib64ass-devel lib64modplug-devel  lib64yajl2 lib64tinyxml0 lib64pcrecpp-devel lib64jasper-devel gperf lib64expat-devel gnutls lib64tinyxml-devel gnutls-devel lib64lzo-devel lib64microhttpd-devel lib64uuid-devel lib64avahi-client-devel  lib64mariadb-devel python-mako lib64drm-devel llvm-devel python3-devel rapidjson lib64cdio-devel pulseaudio-devel lib64xslt-devel lib64vdpau-devel curl-devel lib64sqlite3-devel taglib-devel lib64freeglut-devel lib64xrandr-devel java lib64spdlog-devel lib64waylandpp-devel lib64gif-devel doxygen lib64dav1d-devel lib64flatbuffers-devel lib64mesaegl-devel lib64mesaglesv2-devel lib64gbm-devel

pour ceux qui ont une GPU intel on installera également lib64vdpau-va-gl1 lib64va-devel

j'ai récupéré sur ce site https://github.com/foo86/dcadec la bibliothèque dcadec est un décodeur audio DTS (Digital Theater System) qui permet un rendu sonore sur six canaux (5.1), on décompresse en tapant

tar xvfz dcadec-0.2.0.tar.gz

cela donne le répertoire dcadec-0.2.0/ dans lequel on tape simplement

make

puis en tant que root

make install

c'est pas tout maintenant j'ai besoin de récupérer la bibliothèque 
C++ GUID/UUID crossguid qu'on trouvera par ici https://github.com/graeme-hill/crossguid. On décompresse en tapant :

tar xvfz crossguid-0.2.2.tar.gz

cela donne le répertoire crossguid-master dans lequel on tape

g++ -std=c++11 -DGUID_LIBUUID -Wall -c Guid.cpp -o guid.o
ar rvs libcrossguid.a guid.o


puis en tant que root

cp libcrossguid.a /usr/lib64

on installe maintenant fstrcmp qu'on trouvera ici http://fstrcmp.sourceforge.net/ on décompresse l'archive en tapant

tar xvfz fstrcmp-0.7.D001.tar.gz


cela donne le répertoire fstrcmp-0.7.D001 dans lequel on tape

./configure
make


puis en tant que root make install

on récupère enfin les sources de la dernière version 20.1 par ici https://github.com/xbmc/xbmc/releases on la décompresse en tapant

tar xvfz xbmc-20.2-Nexus.tar.gz

cela donne le répertoire xbmc-20.2-Nexus dans lequel on tape

mkdir build
cd build
cmake -DENABLE_BLUETOOTH=OFF -DENABLE_INTERNAL_FFMPEG=ON -DENABLE_SMBCLIENT=OFF -DENABLE_UPNP=OFF -DENABLE_BLURAY=OFF -DENABLE_LCMS2=OFF -DENABLE_LIRCCLIENT=OFF -DMYSQLCLIENT_INCLUDE_DIR=/usr/local/mysql/include/  -DENABLE_NFS=OFF -DENABLE_SNDIO=OFF -DENABLE_CEC=OFF -DENABLE_CCACHE=OFF -DENABLE_CAP=OFF  -DAPP_RENDER_SYSTEM=gles -DENABLE_MARIADBCLIENT=OFF -DENABLE_CLANGFORMAT=OFF ..

j'ai désactivé tout un tas d'options car je n'en ai pas l'utilité, j'ai forcé l'utilisation d'une version interne de ffmpeg pour éviter les erreurs de compilation avec une version trop récente.
J'ai activé l'option MySQL en installant le package mariadb-devel afin que la base de données soit commune et visible de tous partout sur le réseau. Même si le serveur est distant et ne se trouve pas forcément sur votre machine multimédia il faudra quand même installer MySQL tel qu'expliqué dans cette page. Par défaut l'option webserver est activé on verra plus loin à quoi ça va servir.

-- #---- CONFIGURATION ----#
-- Platforms: x11 wayland gbm
-- App package: org.xbmc.kodi
-- -- PATH config --
-- Prefix: /usr/local
-- Libdir: /usr/local/lib64
-- Bindir: /usr/local/bin
-- Includedir: /usr/local/include
-- Datarootdir: /usr/local/share
-- Datadir: /usr/local/share
-- Docdir: /usr/local/share/doc/kodi
-- CCACHE enabled: No
-- CLANGFORMAT enabled: No
-- CLANGTIDY enabled: No
-- CPPCHECK enabled: No
-- INCLUDEWHATYOUUSE enabled: No
-- ALSA enabled: Yes
-- AVAHI enabled: Yes
-- BLUETOOTH enabled: No
-- BLURAY enabled: No
-- CAP enabled: No
-- CEC enabled: No
-- DAV1D enabled: Yes
-- DBUS enabled: Yes
-- ISO9660PP enabled: Yes
-- LCMS2 enabled: No
-- LIRCCLIENT enabled: No
-- MDNS enabled: No
-- MICROHTTPD enabled: Yes
-- NFS enabled: No
-- PIPEWIRE enabled: No
-- PLIST enabled: Yes
-- PULSEAUDIO enabled: Yes
-- PYTHON enabled: Yes
-- SMBCLIENT enabled: No
-- SNDIO enabled: No
-- UDEV enabled: Yes
-- UDFREAD enabled: No
-- XSLT enabled: Yes
-- VAAPI enabled: Yes
-- VAAPI enabled: Yes
-- VAAPI enabled: Yes
-- MARIADBCLIENT enabled: No
-- MYSQLCLIENT enabled: Yes
-- Configuring done (7.5s)
-- Generating done (0.5s)
-- Build files have been written to: /home/olivier/compilation/xbmc-20.2-Nexus/build

on tape ensuite make puis en tant que root make install maintenant pour compiler les extensions on tapera (en tant que root, attention il faut avoir la commande git)

cd ..
make -j5 -C tools/depends/target/binary-addons PREFIX=/usr/local

pour installer en particulier que les extensions de jeu on tapera :

make -j5 -C tools/depends/target/binary-addons PREFIX=/usr/local ADDONS="game.*"

et on veillera à supprimer les traces d'une vieille installation (/usr/local/share/xbmc ou /usr/local/lib/xbmc)


[Retour haut de la page]

Utilisation

Et voilà ce que ça donne avec le thème Estuary par défaut, une fois qu'on l'a alimenté avec la base de films et qu'on a récupéré les informations pour chacun des films à partir de bases de données sur le net.
 

Les films sont classés par genre, années ou acteurs, les films qui ont fait l'objet de plusieurs moutures sont dans la catégorie « sagas ». Je préfère passer le genre pour sélectionner mon film

Quand on sélectionne un film, on a le résumé et tout un tas d'info, on peut bien évidemment le visualiser ensuite.

Idem pour la musique, cela oblige à avoir ses fichiers musicaux qui soient correctement tagués, merci d'aller voir par comment faire cela de manière automatique avec MusicBrainz Picard.

En mode recherche d'artistes

En mode lecture de musique, il y a bien sûr moyen de créer ses propres listes de lecture.

kodi permet également de visualiser la TV en ligne (via internet ou une box), d'écouter des radios en ligne ou bien encore de visualiser ses photos. Il existe un tas de sites qui présentent kodi, media passion avec son forum et son wiki est un très bon point d'entrée.

[Retour haut de la page]

Installer une base de donnée locale partagée

Maintenant pour que votre base de données soit accessible à tous sur votre réseau quelque soit la machine utilisée, on va l'installer sur un serveur MySQL. Sur ce serveur on va créer un utilisateur kodi en tapant

mysql -u root -p

voilà le résultat

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 25
Server version: 5.6.27 Source distribution

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE USER 'kodi' IDENTIFIED BY 'kodi';
Query OK, 0 rows affected (0,00 sec)

mysql> GRANT ALL ON *.* TO 'kodi';
Query OK, 0 rows affected (0,00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0,00 sec)

Maintenant sous kodi avec votre utilisateur principal on va exporter la base de données à partir du menu Système-> Vidéo Médiathèque-> Exporter la médiathèque vidéo

A la question Exporter vers un fichier unique ou des fichiers séparés pour chaque élément, on répond Séparé

A la question Exporter les vignettes et les fanarts, on répond Oui

A la question Exporter les vignettes acteurs, on répond Oui

A la question Ecraser les anciens fichiers, on répond Oui

cela va créer autant de fichier .nfo qu'il y a de films, chaque fichier .nfo se retrouve dans le même répertoire que celui du film qu'il est censé décrire. Voilà à quoi ça ressemble

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<movie>
    <title>Molière</title>
    <originaltitle>Molière</originaltitle>
    <rating>6.900000</rating>
    <epbookmark>0.000000</epbookmark>
    <year>2007</year>
    <top250>0</top250>
    <votes>14</votes>
    <outline></outline>
    <plot>En 1644, Molière n&apos;a encore que vingt-deux ans. Criblé de dettes et poursuivi par les huissiers, il s&apos;entête à monter sur scène
des tragédies dans lesquelles il est indéniablement mauvais. Et puis un jour, après avoir été emprisonné par des créanciers impatients, il disparaît
...</plot>
    <tagline></tagline>
    <runtime>121</runtime>
    <thumb aspect="poster" preview="http://image.tmdb.org/t/p/w500/hug2HMnzkW2fsvAPyYuBt0Ssg9A.jpg">http://image.tmdb.org/t/p/original/hug2HMnzkW2fs
vAPyYuBt0Ssg9A.jpg</thumb>
    <thumb aspect="poster" preview="http://image.tmdb.org/t/p/w500/9eTXAm7a7jY8tkGRgGtnyUUzKHw.jpg">http://image.tmdb.org/t/p/original/9eTXAm7a7jY8t
kGRgGtnyUUzKHw.jpg</thumb>
    <fanart>
        <thumb preview="http://image.tmdb.org/t/p/w780/nFdQrZM2upgnRsxVHvDzBHh5M8w.jpg">http://image.tmdb.org/t/p/original/nFdQrZM2upgnRsxVHvDzBHh5M
8w.jpg</thumb>
        <thumb preview="http://image.tmdb.org/t/p/w780/xBdllc2nxZBZ1olZA2aWLuuB7eW.jpg">http://image.tmdb.org/t/p/original/xBdllc2nxZBZ1olZA2aWLuuB7
eW.jpg</thumb>
        <thumb preview="http://image.tmdb.org/t/p/w780/wRaODxHVpPUgHWg7iXRCia35sNQ.jpg">http://image.tmdb.org/t/p/original/wRaODxHVpPUgHWg7iXRCia35s
NQ.jpg</thumb>
    </fanart>
    <mpaa>Rated</mpaa>
    <playcount>0</playcount>
    <lastplayed></lastplayed>
    <id>tt0796335</id>
    <genre>Drame</genre>
    <genre>Comédie</genre>
    <genre>Romance</genre>
    <genre>Étranger</genre>
    <country>France</country>
    <set></set>
    <director>Laurent Tirard</director>
    <premiered></premiered>
    <status></status>
    <code></code>
    <aired></aired>
    <trailer>plugin://plugin.video.youtube/?action=play_video&amp;videoid=NySWrKfEa4E</trailer>
    <fileinfo>
        <streamdetails>
            <video>
                <codec>xvid</codec>
                <aspect>2.352941</aspect>
                <width>640</width>
                <height>272</height>
                <durationinseconds>7260</durationinseconds>
                <stereomode></stereomode>
            </video>
            <audio>
                <codec>mp3</codec>
                <language></language>
                <channels>2</channels>
            </audio>
        </streamdetails>
    </fileinfo>
    <actor>
        <name>Romain Duris</name>
        <role>Moliere</role>
        <order>0</order>
        <thumb>http://image.tmdb.org/t/p/original/buU0mFOX7PvSr50F6H8SrN71W08.jpg</thumb>
    </actor>
    <actor>
        <name>Fabrice Luchini</name>
        <role>M. Jourdain</role>
        <order>1</order>
        <thumb>http://image.tmdb.org/t/p/original/wtdwJeLGUBkXSm0ElDlsGTDZcJD.jpg</thumb>
    </actor>
    <actor>
        <name>Édouard Baer</name>
        <role>Dorante</role>
        <order>2</order>
        <thumb>http://image.tmdb.org/t/p/original/bevNDP9RQU1b8UdZPElEw4f9fc9.jpg</thumb>
    </actor>
    <actor>
        <name>Ludivine Sagnier</name>
        <role>Celimene</role>
        <order>3</order>
        <thumb>http://image.tmdb.org/t/p/original/sc0yD6DWgYsMKBpKrYqaZDYz8SX.jpg</thumb>
    </actor>
    <resume>
        <position>0.000000</position>
        <total>0.000000</total>
    </resume>
    <dateadded>2010-09-03 10:28:57</dateadded>
</movie>

maintentant sous .kodi/userdata on va créer le fichier advancedsettings.xml qui va contenir

<advancedsettings>
  <videodatabase>

     <type>mysql</type>

     <host>192.168.13.11</host>

     <port>3306</port>
     <user>kodi</user>
     <pass>kodi</pass>
  </videodatabase>
  <videolibrary>
    <importwatchedstate>true</importwatchedstate>
    <importresumepoint>true</importresumepoint>
  </videolibrary>
</advancedsettings>

il faudra indiquer l'adresse IP du serveur MySQL. En relançant dans le fichier .kodi/temp/kodi.log, on voit les étapes de première création des tables, voilà un extrait

16:09:20 T:139806471604160   DEBUG: Mysql execute: CREATE INDEX ixMusicVideoBasePath ON musicvideo ( c14(12) )
16:09:20 T:139806471604160   DEBUG: Mysql execute: CREATE INDEX ixEpisodeBasePath ON episode ( c19(12) )
16:09:20 T:139806471604160   DEBUG: Mysql execute: CREATE INDEX ix_streamdetails ON streamdetails (idFile)
16:09:20 T:139806471604160   DEBUG: Mysql execute: CREATE INDEX ix_seasons ON seasons (idShow, season)
16:09:20 T:139806471604160   DEBUG: Mysql execute: CREATE INDEX ix_art ON art(media_id, media_type(20), type(20))
16:09:20 T:139806471604160   DEBUG: Mysql execute: CREATE UNIQUE INDEX ix_tag_1 ON tag (name(255))
16:09:20 T:139806471604160   DEBUG: Mysql execute: CREATE UNIQUE INDEX ix_tag_link_1 ON tag_link (tag_id, media_type(20), media_id)
16:09:20 T:139806471604160   DEBUG: Mysql execute: CREATE UNIQUE INDEX ix_tag_link_2 ON tag_link (media_id, media_type(20), tag_id)
16:09:20 T:139806471604160   DEBUG: Mysql execute: CREATE INDEX ix_tag_link_3 ON tag_link (media_type(20))
16:09:20 T:139806471604160   DEBUG: Mysql execute: CREATE UNIQUE INDEX ix_actor_1 ON actor (name(255))

dans phpMyAdmin, je vois que les bases MyVideo93 et MyMusic52 ont été crées. Maintenant pour un autre utilisateur kodi il faudra récupérer ce fichier advancedsettings.xml et le placer sous son répertoire .kodi/userdata.

Maintenant pour peupler la base MySQL, il faut avec votre utilisateur principal lancer kodi et mettre à jour la médiathèque, il va lancer un scan comme à l'initialisation d'une nouvelle base sauf que il va lire les fichiers .nfo au lieu de repartir de zéro. Voilà le genre de chose qu'on peut découvrir en visualisant le fichier .kodi/temp/kodi.log

17:18:30 T:140142598506240   DEBUG: Mysql execute: insert into actor (actor_id, name, art_urls) values(NULL, 'Dharmadasa Kuruppu', '')
17:18:30 T:140142598506240   DEBUG: Mysql execute: INSERT INTO actor_link (actor_id, media_id, media_type, role, cast_order) VALUES(3524,198,'movie','Chieftain',16)
17:18:30 T:140142598506240   DEBUG: Mysql execute: insert into actor (actor_id, name, art_urls) values(NULL, 'Stany De Silva', '')
17:18:30 T:140142598506240   DEBUG: Mysql execute: INSERT INTO actor_link (actor_id, media_id, media_type, role, cast_order) VALUES(3525,198,'movie','Sajnu',17)
17:18:30 T:140142598506240   DEBUG: Mysql execute: insert into actor (actor_id, name, art_urls) values(NULL, 'Ruby de Mel', '')
17:18:31 T:140142598506240   DEBUG: Mysql execute: INSERT INTO actor_link (actor_id, media_id, media_type, role, cast_order) VALUES(3526,198,'movie','Village Woman',18)
17:18:31 T:140142598506240   DEBUG: Mysql execute: insert into actor (actor_id, name, art_urls) values(NULL, 'Denavaka Hamine', '')

Maintenant pour utiliser cette base de données sur d'autres machines et avec d'autres utilisateurs, il suffit de placer le fichier advancedsettings.xml dans le répertoire userdata de vos utilisateurs et systèmes. Et là sans avoir à créer une médiathèque, à recharger ou scanner je ne sais quoi, vous avez accès directement à la base de données.

[Retour haut de la page]

Modifier les genres des films

J'ai constaté que souvent les films sont classés un peu n'importe comment, du style on va retrouver le dessin animé "la belle et la bête" dans la catégorie horreur. Il n'y a pas de moyen de modifier simplement la catégorie. En revanche il existe deux possibilités, vous êtes configuré en local sans usage de base de données avec l'utilisation de fichiers .nfo pour décrire les films, ou alors vous êtes configuré en base de données avec toutes les informations de vos films stockées dans une base de données SQL (comme décrit plus haut).

Utilisation avec base de données

Il fut un temps où il existait WiMM qui permettait de modifier directement dans la base de donnée de kodi, on peut toujours le trouver par là https://github.com/slash2009/XWMM  cela qui donnait quelque chose comme ça


il n'est malheureusement plus maintenu et n'est plus compatible avec les dernières versions de kodi. Je n'ai pas trouvé d'autres solutions que de le faire avec phpMyAdmin.



En fait il faut choisir la base de données kodi, puis la table movie et Rechercher, dans le champ c14 qui correspond au genre on met %Fantastique% (sans guillemet) pour sélectionner les films dans la catégorie Fantastique, ensuite si un film n'est pas classé correctement il faut l'éditer et modifier le genre. Je reconnais volontiers que c'est une méthode assez peu conviviale par rapport à ce que WiMM pouvait apporter.



Utilisation avec fichiers .nfo

kodi n'utilise pas de base de données et se base sur des fichiers .nfo dans le répertoire de vos films. On pourra se servir de MediaElch qu'on trouvera par ici https://github.com/Komet/MediaElch/releases tout d'abord on installera les packages suivant lib64mediainfo-devel et  lib64quazip1-qt5-devel

on désarchive l'archive de MediaElch en tapant

MediaElch-2.10.4.tar.gz

cela donne le répertoire MediaElch-2.10.4 dans lequel on tape

mkdir build
cd build
cmake .. -DUSE_EXTERN_QUAZIP=ON
make

puis en tant que root

make install

Voilà ce que ça donne en tapant MediaElch




on peut sélectionner les films d'un certain genre



et si un film n'est pas dans la bonne catégorie, on modifie et MediaElch va modifier le fichier .nfo



MediaElch peut faire bien plus de choses, il peut agir sur toutes les autres informations de chaque film.


[Retour haut de la page]

Extensions youtube

Vous avez la possibilité de rajouter un tas d'extensions, exemple avec l'extension youtube.Quand on lance l'extension youtube, il faut d'abord cliquer sur Connexion pour l'associer à un compte youtube, et voilà ce que ça donne quand l'association est terminée.


et voilà avec une playlist


[Retour à l'accueil]
[Retour haut de la page]