XBMC
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
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!
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/ .
- Für XBMC braucht man noch das nötige Plugin. Das findet sich z.B. auf http://www.ubuntuupdates.org/package/xbmc/raring/main/base/xbmc-pvr-tvheadend-hts .deb-Paket herunterladen und mit
dpkg -i packagename.deb
installieren.
- 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:
- http://forum.kodi.tv/showthread.php?tid=160975
- Python-Docs (leider hier nur ältere Version)
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.
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