FUNIX

Mettez un manchot dans votre PC



Outils multimédia

[ Présentation | Outils orientés audio ( Audacious , Clementine )  | Karaoke ( pyKaraoke , kmid , Performous ,   OSD Lyrics )  | Mediacenter : kodi  ]

Outils multimédia pour Mediacenter

Dernière modification 20 décembre 2016

Présentation

Maintenant que vous avez installé des logiciels pour faire du montage vidéo, lire les vidéos, les transcoder, voici une page un peu fourre tout de logiciels qui rentrent pas forcément dans ces dernières catégories et qui vous permettront de compléter une configuration multimedia le tout bien évidemment sous linux.
On y trouve donc des logiciels pour gérer une bibliothèque audio et/ou vidéo, pour faire du karaoke, ça peut s'adresser à des PC dédiés qu'on branche à la TV, en fait tous les outils utiles et forcément nécessaires pour faire un mediacenter branché à une TV.

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

Outils orientés audio

Audacious

Audacious est un logiciel pour gérer une bibliothèque audio, on pourra créer des listes de lecture, faire des tris, juste ce qu'il faut pour animer une soirée. Le site officiel est http://audacious-media-player.org/ on y récupère l'archive qu'on décompresse en tapant:

tar xvfj audacious-3.8.1.tar.bz2

cela donne le répertoire audacious-3.8.1 dans lequel on tape :

./configure --enable-qt

voilà le résultat

Configuration:

  Install path:                           /usr/local

  Automatic character code detection:     no
  D-Bus support:                          yes
  GTK+ support:                           yes
  Qt support:                                yes
  Valgrind analysis support:              no

on tape ensuite

make

puis en tant que root

make install

on installe maintenant audacious-plugins qu'on trouve sur le même site en tapant

tar xvfj audacious-plugins-3.8.1.tar.bz2

cela donne le répertoire audacious-plugins-3.8, on installe préalablement les packages lib64wavpack-devel, lib64mpg123-devel et lib64neon-devel puis on revient au répertoire d'audacious plugins dans lequel on tape

./configure --enable-qt --disable-wavpack

voilà le résultat

Configuration:

  Install path:                           /usr/local/lib/audacious

  GTK+ support:                           yes
  Qt support:                             yes

  Audio Formats
  -------------
  Audio CD:                               yes
  Free Lossless Audio Codec:              yes
  Ogg Vorbis:                             yes
  MIDI (via FluidSynth):                  no
  MPEG-1 Layer I/II/III (via mpg123):     yes
  MPEG-2/4 AAC:                           yes
  WavPack:                                yes

  External Decoders
  -----------------
  FFmpeg/Libav:                           ffmpeg
  libsndfile:                             yes

  Chiptunes
  ---------
  AdLib synthesizer (adplug):             yes
  Commodore 64 audio (sid):               no
  Game Music Emu (spc, nsf, gbs, etc.):   yes
  ModPlug:                                no
  Nintendo DS audio (xsf):                yes
  PlayStation audio (psf/psf2):           yes
  Vortex Tracker (vtx):                   yes

  Other Inputs
  ------------
  Metronome:                              yes
  Tone Generator:                         yes

  Effects
  -------
  Bauer stereophonic-to-binaural (bs2b):  no
  Channel Mixer:                          yes
  Crystalizer:                            yes
  Dynamic Range Compressor:               yes
  Echo/Surround:                          yes
  Extra Stereo:                           yes
  LADSPA Host (requires GTK+):            yes
  Sample Rate Converter:                  yes
  Silence Removal:                        yes
  SoX Resampler:                          no
  Speed and Pitch:                        yes
  Voice Removal:                          yes

  Outputs
  -------
  Advanced Linux Sound Architecture:      yes
  Jack Audio Connection Kit:              yes
  Open Sound System:                      yes
  PulseAudio:                             yes
  Simple DirectMedia Layer:               yes
  Sndio:                                  no
  Win32 waveOut:                          no
  FileWriter:                             yes
    -> MP3 encoding:                      yes
    -> Vorbis encoding:                   yes
    -> FLAC encoding:                     yes

  Playlists
  ---------
  Cue sheets:                             no
  M3U playlists:                          yes
  Microsoft ASX (legacy):                 yes
  Microsoft ASX 3.0:                      yes
  PLS playlists:                          yes
  XML Sharable Playlist Format (XSPF):    yes

  Transports
  ----------
  FTP, SFTP, SMB (via GIO):               yes
  HTTP/HTTPS (via neon):                  yes
  MMS (via libmms):                       no

  General
  -------
  Alarm (requires GTK+):                  yes
  Ampache browser (requires Qt):          no
  Delete Files:                           yes
  GNOME Shortcuts:                        yes
  libnotify OSD:                          yes
  Linux Infrared Remote Control (LIRC):   no
  MPRIS 2 Server:                         yes
  Scrobbler 2.0:                          yes
  Song Change:                            yes

  GTK+ Support
  ------------
  GTK Interface:                          yes
  Winamp Classic Interface:               yes
  Album Art:                              yes
  Blur Scope:                             yes
  OpenGL Spectrum Analyzer:               yes
  LyricWiki viewer:                       yes
  Playlist Manager:                       yes
  Search Tool:                            yes
  Spectrum Analyzer (2D):                 yes
  Status Icon:                            yes
  X11 Global Hotkeys:                     yes
  X11 On-Screen Display (aosd):           yes

  Qt Support
  ----------
  Qt Multimedia output:                   yes
  Qt Interface:                           yes
  Winamp Classic Interface:               yes
  Album Art:                              yes
  LyricWiki viewer:                       yes
  OpenGL Spectrum Analyzer:               yes
  Playlist Manager:                       yes
  Search Tool:                            yes
  Song Info:                              yes
  Status Icon:                            yes


on tape ensuite make puis en tant que root make install

voilà le résultat en le lançant



Clementine

Clementine est également un outil pour gérer une bibliothèque, il offre bien plus de fonctionnalités qu'Audacious, mais il est un peu plus compliqué à installer. Voilà la liste des fonctionnalités, qu'on peut trouver sur le site officiel https://www.clementine-player.org/fr/  :
Sur le site officiel on y récupère l'archive qu'on décompresse en tapant :

tar xvfz Clementine-1.3.1.tar.gz

cela donne le répertoire Clementine-1.3.1. Préalablement on installera les packages suivants en tapant la commande ci-dessous

urpmi python-gobject-devel pygtk2.0-devel lib64dbusmenu-glib-devel dbus-glib-devel lib64gtk+3.0-devel lib64mygpo-qt-devel lib64qtwebkit2.2-devel lib64fftw-devel lib64protobuf-devel lib64taglib-devel lib64mtp-devel lib64qca2-devel lib64gpod-devel lib64glew-devel qt4-linguist lib64mygpo-qt-devel lib64indicate-devel lib64cryptopp-devel lib64echonest-devel

On installe maintenant sparsehash qui fournit des fonctions pour l'accès mémoire (si j'ai bien compris...), le site officiel est

https://code.google.com/p/sparsehash/

on y récupère l'archive qu'on décompresse en tapant

tar xvfz sparsehash-sparsehash-2.0.3.tar.gz

cela donne le répertoire sparsehash-sparsehash-2.0.3/ dans lequel on tape

./configure
make

puis en tant que root

make install

maintenant on installera la librairie lastfm qui permet d'accèder comme son nom l'indique aux services de lastfm. Le site officiel est https://github.com/lastfm/liblastfm on y récupère l'archive qu'on décompresse en tapant

tar xvfz liblastfm-1.0.9.tar.gz

cela donne le répertoire liblastfm-1.0.9 dans lequel on tape successivement

mkdir build
cd build
cmake ..
make

puis en tant que root make install on rajoutera la ligne /usr/local/lib64 dans le fichier /etc/ld.so.conf puis on tapera ldconfig

on installe maintenant la bibliothèque chromaprint qui implémente un algorithme pour extraite les empreintes de n'importe quel source audio. A noter que cette bilbliothèque se trouve sous la forme de package mais comme il est dépendant du package des sources de ffmpeg pour éviter tout risque de conflit, j'ai dû installer chromaprint à partir des sources. Le site officiel est  https://acoustid.org/chromaprint, on y récupère l'archive qu'on décompresse en tapant

tar xvfz chromaprint-1.3.2.tar.gz

cela donne le répertoire chromaprint-1.3.2 dans lequel on tape successivement

mkdir build
cd build
cmake ..
make

puis en tant que root

make install

On en arrive enfin à Clementine, sur le site officiel on y récupère l'archive qu'on décompresse en tapant :

tar xvfz Clementine-1.3.1.tar.gz

cela donne le répertoire Clementine-1.3.1 dans lequel on tape successivement

mkdir build
cd build
cmake ..

voilà le résultat

Building Clementine version: 1.3.1

The following components will be built:
   Box support
   D-Bus support
   Devices: Audio CD support
   Devices: DeviceKit backend
   Devices: GIO device backend
   Devices: MTP support
   Devices: iPod classic support
   Dropbox support
   Google Drive support
   Last.fm support
   Moodbar support
   Skydrive support
   Ubuntu One file support
   Visualisations
   Wiimote support

The following components WILL NOT be built:
   Crash reporting (disabled in CMake config)
   Sparkle integration (missing Mac OS X, Sparkle)
   Spotify support: non-GPL binary helper (missing libspotify)

-- Configuring done
-- Generating done

on tape ensuite

make

j'ai buté sur l'erreur suivante

/usr/local/linux/multimedia/Clementine-1.3.1/src/podcasts/gpoddersync.h:30:24: erreur fatale: ApiRequest.h : Aucun fichier ou dossier de ce type

y a sûrement plus simple, mais j'ai créé les liens suivants en tant que root

ln -s /usr/include/mygpo-qt/ApiRequest.h /usr/include
ln -s /usr/include/mygpo-qt/mygpo_export.h /usr/include
ln -s /usr/include/mygpo-qt/AddRemoveResult.h /usr/include
ln -s /usr/include/mygpo-qt/EpisodeList.h /usr/include
ln -s /usr/include/mygpo-qt/Episode.h /usr/include
ln -s /usr/include/mygpo-qt/EpisodeActionList.h /usr/include
ln -s /usr/include/mygpo-qt/EpisodeAction.h /usr/include
ln -s /usr/include/mygpo-qt/PodcastList.h /usr/include
ln -s /usr/include/mygpo-qt/Podcast.h /usr/include
ln -s /usr/include/mygpo-qt/TagList.h /usr/include
ln -s /usr/include/mygpo-qt/Tag.h /usr/include
ln -s /usr/include/mygpo-qt/Settings.h /usr/include
ln -s /usr/include/mygpo-qt/DeviceUpdates.h /usr/include
ln -s /usr/include/mygpo-qt/DeviceList.h /usr/include
ln -s /usr/include/mygpo-qt/Device.h /usr/include
ln -s /usr/include/mygpo-qt/DeviceSyncResult.h /usr/include

on retape make puis en tant que root

make install

voilà l'interface, je vous laisse découvrir sur le site officiel le manuel d'utilisation, mais d'emblée c'est très intuitif.



si au démarrage vous avez une erreur d'exécution du style qu'il ne trouve pas la biblio /usr/lib64/libsamplerate.so, vous n'avez qu'à créer le lien suivant

ln -s /usr/lib64/libsamplerate.so.0.1.8 /usr/lib64/libsamplerate.so

maintenant sous des versions plus récentes de linux, c'est bourré d'erreurs à la compilation, du coup j'ai récupéré la version en développement en tapant

git clone https://github.com/clementine-player/Clementine.git clementine-player

sous clementine-player on tape

mkdir build
cd build
cmake ..
make
et enfin en tant que root

make install

quand on lance clementine ça peut planter avec ce résultat

12:22:44.667 INFO  main:329                         Clementine 1.3.1-242-g804d716
12:22:44.703 WARN  Database:274                     Couldn't register FTS3 tokenizer
12:22:44.704 DEBUG Database:444                     Applying database schema update 13 from ":/schema/schema-13.sql"
12:22:44.704 ERROR Database:573                     db error:  QSqlError(1, "Impossible de récupérer la rangée", "unknown tokenizer: unicode")
12:22:44.704 ERROR Database:574                     faulty query:  "CREATE VIRTUAL TABLE songs_fts USING fts3(
  ftstitle, ftsalbum, ftsartist, ftsalbumartist, ftscomposer, ftsgenre, ftscomment,
  tokenize=unicode
)"
12:22:44.704 ERROR Database:575                     bound values:  QMap()
12:22:44.704 ERROR unknown                          Unable to update music library database
Abandon (core dumped)

pour éviter cela on édite le fichier ./src/core/database.cpp et on fait le rajout suivant

  {
    #ifdef SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER
     QVariant v = db.driver()->handle();
      if (v.isValid() && qstrcmp(v.typeName(), "sqlite3*") == 0) {
       sqlite3* handle = *static_cast<sqlite3**>(v.data());
       if (handle) {                                                                                                                                        
        sqlite3_db_config(handle, SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER, 1, NULL);                                                                         
       }                                                                                                                                                    
      }                                                                                                                                                      
    #endif
    QSqlQuery set_fts_tokenizer("SELECT fts3_tokenizer(:name, :pointer)", db);

on retape make puis en tant que root make install

Karaoke

pyKaraoke

pyKaraoke est l'outil le plus simple pour faire du karaoke, le site officiel est http://www.kibosh.org/pykaraoke on y récupère l'archive qu'on décompresse en tapant

unzip pykaraoke-0.7.5.zip

cela donne le répertoire pykaraoke-0.7.5. Préalablement on installera les packages suivants en tapant la commande ci-dessous

urpmi python-pygame wxPython python-pygame-devel lib64python-devel

on revient dans le répertoire de pyKaraoke et en tant que root on tape

python setup.py install

Voilà ce que ça donne en image:

pykaraoke

kmid

kmid présente l'intérêt de s'interfacer avec KDE. Le site officiel est http://sourceforge.net/projects/kmid2/ on y récupère l'archive qu'on décompresse en tapant

tar xvfj kmid-2.4.0.tar.bz2

Cela donne le répertoire kmid-2.4.0/ Préalablement on installera les packages suivants en tapant la commande ci-dessous

urpmi kdelibs4-devel qt5-devel lib64qt5svg-devel drumstick-devel


on installera également le lien suivant

ln -s /usr/bin/kde4-config /usr/bin/kde-config

on revient au répertoire kmid-2.4.0/ on y tape

./configure.sh
cd build
make

puis en tant que root make install

maintenant kmid a besoin d'un séquenceur midi, j'ai choisi TiMidity++, le site officiel est http://timidity.sourceforge.net/ on y récupèrera l'archive qu'on décompresse en tapant

 tar xvfj TiMidity++-2.14.0.tar.bz2

cela donne le répertoire TiMidity++-2.14.0 dans lequel on tape

./configure  --enable-audio=alsa --enable-alsaseq --enable-gtk --enable-spectrogram --with-x  --enable-interface=ncurses,gtk
make

puis en tant que root make install

on va récupérer maintenant des bibliothèques de son (soundfount), on prendra la biblio libre freepats qu'on trouvera par ici  http://freepats.zenvoid.org/ on récupèrera l'archive qu'on décompresse dans le répertoire /usr/local/share/timidity qu'il faudra créer préalabement

tar xvfj freepats-20060219.tar.bz2

cela donne le répertoire freepats, maintenant on tapera les commandes suivantes

cd freepats
mv * ..
cd ..
rmdir freepats
mv freepats.cfg timidity.cfg

Pour lancer kmid, il faut d'abord lancer le séquenceur TiMidity++ en tapant

timidity -iA -Os

L'option -iA permet d'invoquer le séquenceur ALSA. Voilà le résultat

Requested buffer size 32768, fragment size 8192
ALSA pcm 'default' set buffer size 32768, period size 8192 bytes
TiMidity starting in ALSA server mode
Opening sequencer port: 128:0 128:1 128:2 128:3

ALSA a créé 4 ports de séquenceur de 128:0 à 128:4. Vous pouvez lancer TiMidity++ en mode graphique mais ça ne présente aucun intérêt. Pour lancer kmid il suffit de taper kmid. Une fenêtre apparait demandant "veuillez choisir un port MIDI maintenant", je choisis timidity:0.

Quand j’ouvre un fichier .kar ou .mid, voilà ce que ça donne

kmid

S’il y a un problème d’accent, il faut mettre comme jeu de caractères Européen de l’ouest (ISO 8859-1). Il y a bien sûr possibilité de créer des listes de lecture.

Performous

performous est un logiciel qui regroupe une fonction de karaoke et un clone de Guitar Hero et de Dance Revolution. Pour le karaoke c'est l'objet de ce chapitre, pour guitar hero il peut s'interfacer avec des instruments de musique, pour danve revolution, il faut danser au rythme de la chanson.
Attention par défaut performous ne connait pas le format .kar ou .mid, il ne reconnait que les fichiers au format ultrastar qui est un clone libre de SingStar qu'on peut trouver sur console. Un titre ultrastar est constitué d'un répertoire contenant

- d'un fichier .txt avec les paroles et les notes
- d'un fichier mp3 qui contient la musique
- d'un fichier .jpg pour la couverture
- d'un autre fichier .jpg pour le backgound
- et éventuellement une vidéo

pour plus d'info sur ce format et la manière de le créer je vous invite à visiter ce site http://ultrastar.fr.free.fr/

Le site officiel est https://performous.org/, on récupère les sources en tapant :

git clone git://github.com/performous/performous.git

Auparavant il faudra récuperer la bibliothèque epoxy qui sert à gérer des pointeurs de fonction OpenGL, le site officiel des releases est ici https://github.com/anholt/libepoxy/releases. On décompresse l'archive en tapant:

tar xvfz libepoxy-1.3.1.tar.gz

cela crée le répertoire libepoxy-1.3.1 dans lequel on tape

.configure
make
make install

on installera maintenant cpp netlib qui est une bibliothèque C++ pour programmer des applications réseau. Le site officiel est http://cpp-netlib.org/, je n'ai pas récupéré la dernière archive qui requiière boost dans une version supérieure à 1.57, sur ma mageia 5 avec boost 1.54, ça aurait mis du désordre du coup j'ai récupéré la précédente archive stable par ici https://github.com/cpp-netlib/cpp-netlib/releases on décompresse l'archive en tapant

tar xvfz cpp-netlib-cpp-netlib-0.11.2-final.tar.gz

cela donne le répertoire cpp-netlib-cpp-netlib-0.11.2-final et on tape

mkdir build
cd build
cmake ..
make

puis en tant que root

make install

ce n'est pas tout, on installe les bibliothèques suivantes (avec ma mageia 5)

urpmi lib64sdl2.0-devel lib64rsvg2-devel lib64sigc++2.0-devel lib64glibmm2.4-devel lib64xml++2.6-devel portaudio-devel lib64jsoncpp-devel portmidi-devel asio

maintenant il faudra recompiler ffmpeg en rajoutant l'option --enable-avresample

on revient dans le répertoire de performous et on tape

cd performous/
mkdir build
cd build
cmake ..

sur ma mageia 5 il ne trouve pas les includes de JSONCPP j'ai du taper

ccmake .

puis indiquer manuellement le chemin comme ceci

JSONCPP_INCLUDE_DIR              /usr/include/jsoncpp 

on retape cmake ..

voilà le résultat

Building Performous 1.1-117-g39a902f
Detected GCC version 4.8.2

-- Found Gettext
-- Localization enabled: Building and installing .mo files
-- Boost version: 1.54
-- Found the following Boost libraries:
--   thread
--   date_time
--   program_options
--   regex
--   filesystem
--   system
-- Found LibEpoxy 1.3.1
-- Found SDL2
-- SDL2 includes: /usr/include/SDL2
-- Found Freetype
-- Found Glib
-- Found GObject
-- Found Pango
-- Found Cairo
-- Found PangoCairo
-- PangoCairo includes: /usr/include/pango-1.0;/usr/include/pango-1.0;/usr/include/cairo;/usr/include/freetype2;/usr/include/glib-2.0;/usr/lib64/glib-2.0/include;/usr/include/glib-2.0
-- Found GDK-PixBuf
-- Found LibRSVG
-- LibRSVG includes: /usr/include/librsvg-2.0;/usr/include/cairo;/usr/include/freetype2;/usr/include/gdk-pixbuf-2.0
-- Found LibXML2
-- Found SigC++
-- Found Glibmm
-- Found LibXML++
-- LibXML++ includes: /usr/lib64/libxml++-2.6/include;/usr/include/libxml++-2.6;/usr/include/libxml2;/usr/lib64/glibmm-2.4/include;/usr/include/glibmm-2.4;/usr/include/glib-2.0;/usr/lib64/glib-2.0/include;/usr/include/sigc++-2.0;/usr/lib64/sigc++-2.0/include
-- Found AVUtil
-- Found AVCodec
-- Found AVFormat
-- AVFormat includes: /usr/local/include;/usr/local/include;/usr/local/include
-- Found AVResample
-- AVResample includes: /usr/local/include;/usr/local/include
-- Found SWScale
-- SWScale includes: /usr/local/include;/usr/local/include
-- Found Z
-- Z includes: /usr/include
-- Found Jpeg
-- Jpeg includes: /usr/include
-- Found Png
-- Png includes: /usr/include
-- Found PortAudio 19
-- PortAudio includes: /usr/include
-- Found Fontconfig
-- Fontconfig includes: /usr/include
-- Found JSONCPP
-- JSONCPP includes: /usr/include/jsoncpp
-- Found Crypto 1.0.1m
-- Found Ssl 1.0.1m
-- Found Cppnetlib
-- Cppnetlib includes: /usr/local/include;/usr/include;/usr/include
-- Crypto includes: /usr/include
-- Ssl includes: /usr/include
-- Internationalization: Enabled
-- Found PortMidi
-- MIDI I/O: Enabled
-- Webcam support: Enabled
-- Webserver support: Enabled
-- Boost version: 1.54
-- Found the following Boost libraries:
--   filesystem
--   program_options
--   system
-- Found LibXML2
-- Found Glib
-- Found SigC++
-- Found Glibmm
-- Found LibXML++
-- Found Z
-- Found Jpeg
-- Found Png
WARNING: One of the following is missing: help2man, gzip; performous man page will not be generated
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/linux/multimedia/performous/build

puis make et en tant que root make install

maintenant on va créer le répertoire /usr/local/share/performous/songs dans lequel vous mettrez vos fichiers ultrastar et voilà ce que ça donne au lancement



et avec une chanson en cours



Pour convertir vos fichiers .kar en fichier ultrastar, ce n'est pas simple, il existe yass qu'on téléchargera par là http://www.yass-along.com/home.html
on le lance en faisant appel à java en tapant dans un shell

java -jar yass-1.7.1.jar

voilà le résultat

AudioSystem and MidiSystem Sequencer found.
Init...
Loading properties: /home/olivier/.yass/user.xml
Mics: default [default]|PCH [plughw:0,0]
Selecting Mic:
Setting Language: fr
Soundbank loaded with instrument: Acoustic Piano
Synthesizer found: Gervill v1.0 OpenJDK
Soundbank ready.
Inited.
Starting...

On va maintenant dans le menu

File->New-> fenêtre Import Melody

vous sélectionnez votre fichier .kar en rajoutant toutes les pistes qui y sont contenues



on rajoute maintenant le fichier mp3 contenant la musique, le plus simple est d'aller sur youtube, il y a un stock de vidéo karaoke, avec audacity vous pouvez récupérer ainsi la musique. On rajoute ensuite les jpg (facultatifs) et voilà le résultat



maintenant vous avez tout un tas de réglage possible, je vous invite à voir ce tuto http://usdx.free.fr/tutorial/?lecon=2


OSD Lyrics

OSD Lyrics présente l'intérêt de pouvoir s'interfacer avec Audacious. Le site officiel est https://code.google.com/p/osd-lyrics/ on y récupère l'archive qu'on décompresse en tapant

tar xvfz osdlyrics-0.4.3.tar.gz

cela donne le répertoire osdlyrics-0.4.3. Préalablement on installera les packages suivants en tapant la commande ci-dessous

urpmi lib64notify-devel intltool

on tape ensuite

./configure
make

je bute sur l'erreur suivante

ol_singleton.c:34:1: erreur: unknown type name ‘int64_t’

on édite le fichier ./src/ol_singleton.c et à la fin des includes on rajoute

#include <inttypes.h>

on retape make puis en tant que root

make install

Couplé avec audacious, cela donne cela

osdlyrics

L’affichage du texte est évidemment synchronisé avec la chanson. On peut le configurer pour afficher 2 lignes et voir en avance de phase celle à venir.

osdlyrics-pref

Le scrolling est également possible

osdlyrics-scrolling

Voilà, vous n’avez plus d’excuses pour faire la fête sous linux !



Outils orientés vidéo : kodi

kodi anciennement connu sous le nom de XBMC, 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. 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

On veillera à ce que libmpeg2 soit correctement installé. On le trouvera sous http://libmpeg2.sourceforge.net/ on décompresse l'archive en tapant:

tar xvfz libmpeg2-0.5.1.tar.gz

cela donne le répertoire libmpeg2-0.5.1 dans lequel on tape

./configure
make

puis en tant que root

make install

Maintenant j'ai du installer les sources de yajl car si vous vous contentez du package de la mageia 4.1, on a droit à l'erreur suivante

JSONVariantParser.cpp:35:1: erreur: invalid conversion from ‘int (*)(void*, long int)’ to ‘int (*)(void*, long long int)’ [-fpermissive]
 };

Le site officiel https://lloyd.github.io/yajl/ on y récupère l'archive qu'on décompresse en tapant

unzip lloyd-yajl-2.1.0-0-ga0ecdde.zip

cela donne le répertoire lloyd-yajl-66cb08c/ dans lequel on tape

./configure
make

puis en tant que root make install

j'ai récupéré également 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

unzip dcadec-master.zip

cela donne le répertoire dcadec-master 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 :

unzip crossguid-master.zip

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 guid.h /usr/local/include/
cp libcrossguid.a /usr/lib64

en avance de phase j'ai du installer les liens suivant

cd /usr/lib64
ln -s liblzo2.so.2.0.0 liblzo2.so
ln -s libtinyxml.so.0.2.6.2 libtinyxml.so

on récupère enfin les sources de la dernière version 16.1 par ici http://mirrors.kodi.tv/releases/source/ on la décompresse en tapant

tar xvfz 16.1-Jarvis.tar.gz


cela donne le répertoire xbmc-16.1-Jarvis dans lequel on tape

./bootstrap
./configure --disable-ssh --disable-samba --disable-upnp --enable-mysql --enable-player --with-ffmpeg=force

j'ai désactivé tout un tas d'option car j'en ai pas l'utilité, attention par contre à bien mettre force pour l'option --with-ffmpeg, car il va télécharger et installer une version modifiée spécifiquement, la compilation ne marche pas avec une version classique de ffmpeg.
J'ai activé l'option MySQL 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 multimedia 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.
Voilà le résultat de configure

------------------------
 Kodi Configuration:
------------------------
 Kodi Version: 16.1
 git Rev.:     Unknown
 Debugging:    Yes
 Profiling:    No
 Optimization: Yes
 SWIG Available:       Yes
 JRE Available:        Yes
 Doxygen Available:    Yes
 Crosscomp.:   No
 target ARCH:
 target CPU:
 OpenGL:       Yes
 ALSA:         Yes
 DBUS:         Yes
 VDPAU:        Yes
 VAAPI:        Yes
 VTBDecoder:   No
 OpenMax:      No
 Joystick:     No
 Touch skin:   No
 X11:          Yes
 Wayland:      No
 Bluray:       No
 TexturePacker:No
 MID Support:  No
 ccache:       No
 ALSA Support: Yes
 PulseAudio:   Yes
 DVDCSS:       Yes
 Google Test Framework Configured:     Yes
 Google Breakpad Configured:   No
 Avahi:        No
 mDNSEmbedded: No
 Non-free:     Yes
 ASAP Codec:   No
 MySQL:        Yes
 Webserver:    Yes
 libssh support:       No
 libRTMP support:      No
 libsmbclient support: No
 libnfs client support:No
 libgif support:       Yes
 AirPlay support:      Yes
 AirTunes support:     No
 UPnP support:         No
 Optical drive:        Yes
 libudev support:      Yes
 libusb support:       No
 libcec support:       No
 libcap support:       No
 additional players:   Yes, yes
 additional codecs:    No
 prefix:       /usr/local
------------------------


on tape ensuite make puis en tant que root make install

Et voilà ce que ça donne, une fois que 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 ». Quand on sélectionne un film, on a le résumé et tout un tas d’info, on peut bien évidemment le visualiser ensuite.

kodi-film

Idem pour la musique.

kodi-music

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

kodi-musique

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, xbmc passion est un très bon point d’entré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.

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. Pour pouvoir le faire, je propose d'utiliser la fonction de webserver qui est activé par défaut. A partir d'un autre PC on pourra se connecter au poste multimedia et pouvoir modifier la base de données comme bon nous semble. On va utiliser WiMM, pour mémoire WiMM s'appelait auparavant XWMM (XBMC Web Media Manager).
Le site officiel est par là https://github.com/slash2009/XWMM mais le plus simple est d'aller directement par ici https://github.com/slash2009/XWMM/wiki/F.A.Q.-Frequently-asked-questions car tout y est résumé. On y récupère le fichier zip.

Maintenant sous kodi dans le menu

Système -> Paramètres -> Extensions -> Installer depuis un fichier zip

on sélectionne le fichier webinterface.WIMM-4.1.21-isengard.zip

on constate le message en bas à droite avec "WIMM extension activée". Maintenant dans le menu

Système -> Paramètres -> Services -> Général

on coche la case "Autoriser le contrôle à distance par des programmes sur ce système"

Dans le menu suivant on configure le serveur web intégré

Système -> Paramètres -> Services -> Serveur web

on coche "Autoriser le contrôle à distance HTTP" et on choisit le numéro du port, par défaut 8080, on choisit également le nom d'utilisateur avec un éventuel mot de passe pour se connecter au serveur. On choisit également l'interface web WIMM

maintenant sur n'importe quel PC de votre réseau, on pointe sur l'adresse du serveur kodi en indiquant le port, comme ceci http://adresse-ip:8080/

voilà ce que ça donne, vous avez la possibilité de modifier n'importe quel paramètre de chaque entrée de votre base de donnée.



Si vous utilisez le plugin youtube, vous verrez que celui par défaut est cassé, il faut récupérer un autre par ici https://github.com/Kolifanes/plugin.video.youtube il se nomme plugin.video.youtube-master.zip et on le garde dans un coin

On  va maintenant dans Vidéos->Extensions->En obtenir plus... 2 fois on clique sur la flèche de retour (en bas à droite) jusqu'à la page Extensions puis Installer depuis un fichier zip
et là on va chercher le fichier précédemment récupéré.
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 mes playlists



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