XBMC

Aus CodicaTipps
Zur Navigation springen Zur Suche springen

XBMC (umbenannt in "Kodi") ist eine OpenSource-Software, die in etwa dem Funktionsumfang des Windows MediaCenters entspricht, d.h. im Wesentlichen Filme und Musik abspielen und aufnehmen und TV auf dem jeweiligen Gerät ermöglicht.

Mit TvHeadEnd lässt sich XBMC auch zu einem Videorecorder aufmöbeln. Damit ist auch das automatische Aufwachen zum Aufnehmen einer programmierten Sendung möglich. Siehe https://tvheadend.org/projects/tvheadend/wiki/Wakeup . Möglicherweise hilft auch dieser Thread zum Wakeup und Shutdown von XBMC,

OpenELEC ist eine Linux-Distribution, die speziell für die Unterstützung von XBMC entwickelt wurde.


Installation aus den Quellen

Installation von Kodi 17.4 Krypton auf Debian 9 Stretch

Mit dieser Anleitung kann Kodi 17.4 Krypton einschließlich des TvHeadend-Addon auf Debian 9 Stretch kompiliert und auf einem Zielsystem installiert werden.

Diese Anleitung beruht auf derjenigen auf penzin.net für Kodi 17.3. Siehe auch

Phase 1 Kompilieren auf dem Quellsystem

Installiere notwendige Packages:

 sudo aptitude install git \
       automake autopoint bison build-essential ccache cmake curl cvs \
       default-jre fp-compiler gawk gdc gettext gperf libasound2-dev \
       libass-dev libavcodec-dev libavfilter-dev libavformat-dev \
       libavutil-dev libbluetooth-dev libboost-dev libboost-thread-dev \
       libbz2-dev libcap-dev libcdio-dev libcrystalhd-dev libcrystalhd3 \
       libcurl3 libcurl4-gnutls-dev libcwiid-dev libcwiid1 libdbus-1-dev \
       libenca-dev libflac-dev libfontconfig1-dev libfreetype6-dev \
       libfribidi-dev libglew-dev libiso9660-dev \
       libjpeg-dev libltdl-dev liblzo2-dev libmad0-dev libmicrohttpd-dev \
       libmodplug-dev libmp3lame-dev libmpeg2-4-dev libmpeg3-dev \
       libnfs-dev libogg-dev libpcre3-dev libplist-dev \
       libpng-dev libpostproc-dev libpulse-dev libsamplerate0-dev \
       libsdl1.2-dev libsdl-gfx1.2-dev libsdl-image1.2-dev \
       libsdl-mixer1.2-dev libsmbclient-dev libsqlite3-dev libssh-dev \
       libswscale-dev libtiff5-dev libtinyxml-dev libtool \
       libudev-dev libusb-dev libva-dev libva-egl1 libva-tpi1 libvdpau-dev \
       libvorbisenc2 libxml2-dev libxmu-dev libxrandr-dev libxrender-dev \
       libxslt1-dev libxt-dev libyajl-dev mesa-utils nasm pmount \
       python-dev python-imaging python-sqlite swig unzip yasm zip \
       zlib1g-dev libtag-extras-dev libgnutls28-dev \
       uuid-dev libgif-dev libsdl2-dev liblcms2-dev xz-utils \
       libssl1.0-dev default-libmysqlclient-dev libcrossguid-dev \
       libavahi-client-dev libbluray-dev libp8-platform-dev libcec-dev \
       joe bash-completion


 cd # Wechsle ins Home-Verzeichnis
 mkdir kodi17.4
 cd kodi17.4
 git clone -b Krypton https://github.com/xbmc/xbmc.git
 git checkout 17.4-Krypton  # Das ist der Tag des Releases, kein Branch
 git clone https://gitlab.com/vadimp/kodi-mdnsresponder
 git clone https://github.com/juhovh/shairplay.git
 # only necessary for TvHeadend-Addon pvr.hts
 git clone -b Krypton https://github.com/kodi-pvr/pvr.hts.git

Erzeuge Datei ~/kodi17.4/kodi-build-vars.sh mit folgendem Inhalt:

export KODI_PFX='/opt/kodi17.4'
export C_INCLUDE_PATH="${C_INCLUDE_PATH}:${KODI_PFX}/include"
export CPLUS_INCLUDE_PATH="${CPLUS_INCLUDE_PATH}:${KODI_PFX}/include"
export LIBRARY_PATH="${LIBRARY_PATH}:${KODI_PFX}/lib"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${KODI_PFX}/lib"
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${KODI_PFX}/lib/pkgconfig"
export PATH="${PATH}:${KODI_PFX}/bin"
export MAKEFLAGS="-j1"

Lese die Umgebungsvariablen ein:

 source ~/kodi17.4/kodi-build-vars.sh

Shairplay und mDNSResponder kompilieren und installieren:

 cd "~/kodi17.4/shairplay"
 ./autogen.sh
 ./configure "--prefix=${KODI_PFX}"
 make
 sudo make install
 cd "../kodi-mdnsresponder"
 make
 sudo sh -c "PREFIX=\"${KODI_PFX}\" make install"

Dynamische Bibliotheken von shairplay und mDNSResponder zur Kompilation von Kodi bereitstellen:

 sudo ldconfig "${KODI_PFX}/lib"

Kompilieren von Kodi

 cd "~/kodi17.4/xbmc"
 ./bootstrap
 ./configure "--prefix=${KODI_PFX}" --enable-mid
 make

Kompilieren des TvHeadend-Addons pvr.hts:

 cd "~/kodi17.4/pvr.hts"
 mkdir build
 cd build
 cmake -DADDONS_TO_BUILD=pvr.hts -DADDON_SRC_PREFIX=../.. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=../../xbmc/addons -DPACKAGE_ZIP=1 ../../xbmc/project/cmake/addons
 make

oder

 cd "~/kodi17.4/xbmc"
 make -C tools/depends/target/binary-addons PREFIX=${KODI_PFX} ADDONS="pvr.hts adsp.basic audiodecoder.modplug audiodecoder.nosefart audiodecoder.sidplay audiodecoder.snesapu audiodecoder.stsound audiodecoder.timidity audiodecoder.vgmstream audioencoder.flac audioencoder.lame audioencoder.vorbis audioencoder.wav inputstream.mpd pvr.demo visualization.fishbmc visualization.goom visualization.projectm  visualization.shadertoy visualization.spectrum visualization.vsxu visualization.waveform"


Installieren von Kodi samt Addon:

 cd "~/kodi17.4/xbmc"
 sudo make install

Zusammenfassen der Binärinstallation in ein TAR-Archiv:

 cd ~/kodi17.4
 sudo tar -C / -cJf "kodi-17.4-$(uname -m).tar.xz" "${KODI_PFX:1}/"{bin,lib,share}

Phase 2 Installieren auf dem Zielsystem

Notwendige Pakete auf dem Zielsystem
 sudo aptitude install \
       dbus libasn1-8-heimdal libasound2 libass5 libasyncns0 \
       libattr1 libavahi-client3 libavahi-common3 libbluetooth3 libbsd0 \
       libbz2-1.0 libcap2 libcdio13 libcomerr2 libcrystalhd3 \
       libcurl3-gnutls libdbus-1-3 libdrm2 libexpat1 libffi6 libflac8 \
       libfreetype6 libfribidi0 libgcrypt20 libgl1-mesa-glx \
       libglapi-mesa libglew2.0 libglu1-mesa libgmp10  libgnutls-dane0 \
       libgpg-error0 libgssapi3-heimdal libgssapi-krb5-2 \
       libhcrypto4-heimdal libheimbase1-heimdal \
       libheimntlm0-heimdal libhogweed4 libhx509-5-heimdal libice6 \
       libjbig0 libjpeg62-turbo libjson-c3 libk5crypto3 \
       libkeyutils1 libkrb5-26-heimdal libkrb5-3 libkrb5support0 \
       libldap-2.4-2 libldb1 liblzma5 liblzo2-2 libmad0 \
       libmicrohttpd12 libnettle6 libntdb1 libogg0 libp11-kit0 libpcre3 \
       libpcrecpp0v5 libpng16-16 libpulse0 libpython2.7 \
       libroken18-heimdal libsasl2-2 libsm6 libsmbclient libsndfile1 \
       libsqlite3-0 libssh-4 libssl1.1 libsystemd0 libtag1v5-vanilla \
       libtalloc2 libtasn1-6 libtdb1 libtevent0 libtiff5 libtinyxml2.6.2v5 \
       libudev1 libuuid1 libva1 libva-x11-1 libvorbis0a libvorbisenc2 \
       libwbclient0 libwind0-heimdal libwrap0 libx11-6 libx11-xcb1 libxau6 \
       libxcb1 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 \
       libxcb-render0 libxcb-shape0 libxcb-sync1 libxcb-xfixes0 \
       libxdamage1 libxdmcp6 libxext6 libxfixes3 libxi6 libxml2 libxmu6 \
       libxrandr2 libxrender1 libxshmfence1 libxslt1.1 libxt6 libxtst6 \
       libxxf86vm1 libyajl2 policykit-1 samba-libs sudo x11-xserver-utils \
       xinit zlib1g unzip libsdl2-2.0-0 liblcms2-2 xz-utils upower \
       libmariadbclient18 libcrossguid0 \
       libavahi-client3 libbluray1 libp8-platform2 libcec4 \
       libvdpau1 libva-drm1 pulseaudio \
       pavucontrol sudo joe
Zugriffsrechte für X11

Auch non-root-Benutzer sollen Rechte haben, auf den XServer zuzugreifen:

 dpkg-reconfigure xserver-xorg-legacy
Auspacken auf dem Zielsystem
 sudo tar -C / -xvJf tmp/kodi-17.4-pvr_hts_only-x86_64.tar.xz 

Dem System die dynamischen Bibliotheken von Kodi mitteilen (steht bei penzin.net, bin nicht sicher, ob es notwendig ist):

 cat <<EOF | sudo tee /etc/ld.so.conf.d/kodi.conf
 /opt/kodi17.4/lib
 EOF
 sudo ldconfig
Systemd-Service für Kodi

Dann braucht man zum automatischen Starten von Kodi noch einen Systemd-Service. Bitte beim kodi.service-Script auf den korrekten Pfad in /opt/kodi/bin achten. Ein Beispiel für ein solches Skript /etc/systemd/system/kodi.service:

[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
#PAMName = login # you might want to try this one, did not work on all systems
ExecStart = /usr/bin/xinit /usr/bin/dbus-launch --exit-with-session /opt/kodi17.4/bin/kodi-standalone -- :0 -nolisten tcp vt7
Restart = always
RestartSec = 20

[Install]
WantedBy = multi-user.target


Nicht zu vergessen sind auch die für kodi erforderlichen Gruppen:

 sudo adduser kodi
 sudo usermod -a -G cdrom,audio,video,plugdev,users,dialout,dip,input,netdev kodi
Infrarot-Fernbedienung

Um diese einzurichten siehe bei Linux-Tipps#Infrarot-Schnittstelle.

Installation von Kodi 17.3 Krypton auf Debian 9 Stretch

Auch auf einem Debian lässt sich die aktuelle Version von Kodi kompilieren und installieren:

Auf der Zielmaschine musste ich noch ConsoleKit installieren:

 sudo aptitude install consolekit 

Statt des bei Penzin beschriebenen Autostarts kann man es auch mit Systemd-Service versuchen. Bitte beim kodi.service-Script auf den korrekten Pfad in /opt/kodi/bin achten. Nicht zu vergessen sind auch die für kodi erforderlichen Gruppen:

 sudo usermod -a -G cdrom,audio,video,plugdev,users,dialout,dip,input,netdev kodi

Um das PVR-Plugin für TvHeadend zu installieren kann man sich des vorhandenen DEB-Packages bedienen:

 #!/bin/bash
 set -e
 set -x
 sudo aptitude --download-only install kodi-pvr-hts
 tmp_dir=/tmp/kodi-pvr-hts
 kodi_home=/opt/kodi
 rm -Rf $tmp_dir # clean up temporary directory
 mkdir -p $tmp_dir
 cd $tmp_dir
 ar xv /var/cache/apt/archives/kodi-pvr-hts*.deb
 xz --decompress -v data.tar.xz
 tar --extract -vf data.tar
 sudo cp -avRi usr/share/kodi/addons/pvr.hts $kodi_home/share/kodi/addons/
 sudo cp -avRi usr/lib/x86_64-linux-gnu/kodi/addons/pvr.hts $kodi_home/lib/kodi/
 echo Finished!

Installation von Kodi 17.1 Krypton vom Debian 9 Stretch Repository

Bei einer vollständigen Installation von Debian 9 Stretch mit GUI kann man Kodi ganz simpel installieren:

 sudo aptitude install kodi

Hat man jedoch ein Minimalsystem installiert, werden nicht alle Abhängigkeiten mitinstalliert. Zu installieren ist u.a.

 sudo aptitude install xinit dbus-launch

Gestartet wird Kodi dann von der Kommandozeile so:

 /usr/bin/xinit /usr/bin/dbus-launch --exit-with-session

wobei ich derzeit noch ein sudo hinzufügen muss. Da muss man noch an den Berechtigungen drehen.

PVR

Für Live-TV und das Aufnehmen von Videos benötigt XBMC ein Backend. Ein solches ist Tvheadend.

Tvheadend

Vorbereitung: Firmware für TV-Stick/-Karte

Häufig benötigen TV-Sticks oder -Karten unter Linux eine spezielle Firmware, die speziell installiert werden muss.

Beispiel TechnoTrend TT-TVStick CT2-4400:

Hier muss man die Dateien dvb-demod-si2168-b40-1.fw und dvb-tuner-si2158-a20-01.fw vom OpenElec-Server herunterladen und ins Verzeichnis /lib/firmware verschieben.[1]

Installation in Ubuntu

Siehe die Installationsanleitung auf tvheadend.org. Für Ubuntu 15.10 Wily muss man auf die "Release"-Version von 15.04 "vivid" zurückgreifen (Stand: Ende 2015).

Die Installationsanleitung auf ubuntuusers.de ist dagegen veraltet (Stand: 4.8.2015).

Installation in Ubuntu 13.10

Zur Installation von Tvheadend auf Ubuntu 13.10 saucy salamander benötigt man das Paket für die alte "Raring"-Version.[2] Dazu erzeugtt man beispielsweise die Datei /etc/apt/sources.list.d/tvheadend.list mit folgendem Inhalt:

 deb http://apt.tvheadend.org/stable raring main

Außerdem importiert man noch den GPG-Schlüssel:[3]

 curl http://apt.tvheadend.org/repo.gpg.key | sudo apt-key add -


Evtl. muss man den User "hts", unter dem der tvheadend-Server läuft, noch der Gruppe video zuweisen:

 adduser hts video

Zu Testzwecken kann man den tvheadend-Server auch im Vordergrund ausführen

 sudo service tvheadend stop # Daemon anhalten  
 sudo su hts # als hts-Benutzer anmelden
 tvheadend

Konfiguration

Unter http://localhost:9981/

  • TV-Tuner auswählen
  • Network hinzufügen
  • das Network beim TV-Tuner/Adapter aktivieren
  • mit save Sendersuchlauf starten
  • Muxes auf Services spiegeln
  • DVB-Services auf Channels spiegeln
  • unter Configuration -> Timeshift dieses einschalten und ggf. einen Pfad zur Pufferspeicherung angeben
  • unter Configuration -> Recording etwas Vor- und Nachlauf einschalten, damit nicht die Aufnahmen den Anfang und das Ende nicht enthalten.

Zugriff

Die WebGUI von Tvheadend erreicht man unter http://localhost:9981/ .

  • Wohl ist die leichteste Variante der Installation des Pakets kodi-pvr-hts über das PPA von Kodi.


In XBMC-Settings unter "Live-TV" Live-TV einschalten, ggf. noch das Tvheadend-Plugin aktivieren (Enabled).

Möglicherweise klappt auch der Zugriff über VLC. Dazu braucht man jedoch das VLC-HTSP-Plugin, das ggf. kompiliert werden muss.

Tvheadend im DockerContainer

Auf des von linuxserver gepflegten Tvheadend-Images lässt sich folgendermaßen ein Container "tvheadend" erzeugen:

 docker create --name=tvheadend --net=bridge -v /media/extData/dh/tvheadendConfig:/config -v /media/extData/dh/videos:/recordings -e PUID=111 -e PGID=44 -p 9981:9981 -p 9982:9982 --device=/dev/dvb linuxserver/tvheadend

Dabei sind

  • /media/extData/dh/tvheadendConfig - das Konfigurationsverzeichnis auf dem Host für Tvheadend
  • /media/extData/dh/videos - das Verzeichnis, in dem Tvheadend die Aufnahmen speichert
  • 111 - die UID des Nutzers hts auf dem Host - anlegen des Benutzers und anzeigen der UID mit
 adduser hts
 id hts
  • 44 - die GID der Gruppe video auf dem Host - wird angezeigt durch
 getent group video

Bitte darauf achten, auf dem Host die Firmware für den TV-Adapter in /lib/firmware zu legen.

Siehe

JSON-RPC API

Auf Kodi kann man auch mittels JSON-API zugreifen. Beispiele:

 curl  --header 'Content-Type: application/json' --data-binary '{ "id": 1, "jsonrpc": "2.0", "method": "Player.GetActivePlayers" }' 'http://kodibox:8080/jsonrpc'
 curl  --header 'Content-Type: application/json' --data-binary '{ "id": 1, "jsonrpc": "2.0", "method": "JSONRPC.Version" }' 'http://nuckie.fritz.box:8080/jsonrpc'

Steht der DLNA-Renderer zur Verfügung?

 curl  --header 'Content-Type: application/json' --data-binary '{ "id": 1, "jsonrpc": "2.0", "method": "Settings.GetSettingValue", "params": { "setting":"services.upnprenderer" } }' 'http://kodibox:8080/jsonrpc'

DLNA-Renderer einschalten:

 curl  --header 'Content-Type: application/json' --data-binary '{ "id": 1, "jsonrpc": "2.0", "method": "Settings.SetSettingValue", "params": { "setting":"services.upnprenderer", "value":true } }' 'http://kodibox:8080/jsonrpc'

Einen Überblick der vorhandenen Methoden gibt

 http://kodibox:8080/jsonrpc

Siehe dazu

Videos

Manuelles Hinzufügen von Metadaten

Wenn die Videos keine Metadaten enthalten und auch nicht mittels der in Kodi eingebauten Scraper mit Informationen versorgt werden können, kann man durch Hinterlegen einer .nfo-Datei Metainformationen den Videos beigeben. Die Datei trägt denselben Namen wie die Filmdatei; lediglich die Endung wird durch .nfo ersetzt.

Sie ist regelmäßig eine XML-Datei. Ihre nähere Beschreibung findet sich im Kodi-Wiki.

Addons

Addons selbst entwickeln

Siehe zu Grundlagen:

Das Addon-Modul "Kodi Plugin Routing" ermöglicht deutlich leichter lesbare Plugins für Kodi zu schreiben.

Kontextmenüs

Es lassen sich Addons schreiben, die speziell zusätzliche Menüpunkte zur Verfügung stellen. Diese müssen in der addon.xml einen entsprechenden Extension-Point definieren.[4]

Wenn Addons nur bei den selbst geschaffenen Einträgen Contextmenüs hinzufügen wollen, geht das auch über xbmcgui.ListItem.addContextMenuItems(...).

Video-Addons

Mediathek

Problem mit Debian Stretch

Unter Debian Stretch kann es sein, dass das Mediathek-Modul seit Version 0.7.3 nicht mehr funktioniert. Grund ist eine Abhängigkeit des ab dieser Version eingesetzten BeautifulSoup-Frameworks. Dieses kommt mit dem unter Debian Stretch für Python 2.7 installierten python-html5lib-Modul durcheinander. Das lässt sich durch das Entfernen von python-html5lib beheben:

 sudo aptitude -y remove python-html5lib
Problem mit Kodi 17.0 auf Debian Stretch

Die Mediathek zeigte bei mir nach dem Update auf Kodi 17.0 keine Daten zu den Filmen an. In den Logs fand sich folgender Fehler:

  Exception
  ERROR: TypeError
  ERROR: :
  ERROR: "'NoneType' object is not callable"
  ERROR:  in
  ERROR: 'lxml.etree._ExceptionContext._store_raised'
  ERROR:  ignored

Abhilfe schaffte die Ergänzung von , "html.parser" bei der Erzeugung einer Instanz von BeautifulSoup (z.B. bs = bs4.BeautifulSoup(text, "html.parser") ) in allen Dateien des Plugins Mediathek. Die Dateien findet man durch

 grep -R "BeautifulSoup" ~/.kodi/addons/plugin.video.mediathek/*

Siehe dazu auch diesen Thread im Kodi-Forum.


= Mediathekview

Ähnlich wie das Desktop-Programm Mediathekview greift das gleichnamige Addon auf die gescrapten Daten des Server-Teils von Mediathekview zu. Das Addon Mediathekview scheint damit weitaus stabiler zu laufen (jedenfalls unter Kodi 17 Krypton) als die Mediatheken, die unmittelbar auf die einzelnen Sender zugreifen.

Youtube

Das Youtube-Modul scheint auch recht zuverlässig zu funktionieren.


Tests

  • Oberfläche: Korrekte Sprache?
  • Tastatur: korrektes Layout?
  • Ton?
    • Oberfläche?
    • Film?
  • TV
    • Kanäle wechseln
    • Aufnehmen
    • Aufnahmen sichtbar
  • Addons
    • ARD-Mediathek
    • BR-Mediathek
    • KIKA-Mediathek
    • Youtube
    • ZDF-Mediathek
    • ZDF-tivi-Mediathek
    • MPD
  • Upnp
    • Werden Medien im Netz gefunden?
    • Kann z.B. mittels BubbleUpnp Bilder/Filme auf dem HTPC vom Smartphone abgespielt werden?
  • Avahi - wird Kodi z.B. von Kore gefunden?
  • Fernbedienung
    • Laut/Leise
    • OK
    • Zurück
    • Info/Kontextmenü
    • Aufnahmetaste

Naheliegendes

Siehe auch