Server mit Netzwerkanschluss hinter einem T-Entertain-Anschluss. An den Fernsehern im Haus liegt bereits Netzwerk und jeweils ein Raspberry PI oder ähnliches, um als Empfänger des VDR-Streams zu agieren. Auf den Clients läuft ein KODI (teilweise unter OpenELEC), welcher die Integration des VDR erleichtern soll. Es steckt allerdings keine DVB-T/DVB-C-Karte oder ähnliches im Server, sondern er soll die IPTV-Streams von der Telekom (T-Entertain/T-Home) nutzen. Dieses Vorgehen ist völlig legal. Einziger Nachteil bei dieser Vorgehensweise: Es gibt praktisch keine EPG-Daten aus dem Datenstrom, diese sind – bis auf „now“ und „next“ – verschlüsselt und können nur durch den von der Telekom bereitgestellten „Media Receiver“ entschlüsselt werden.
Der VDR wurde hierfür selbst kompiliert, um die notwendigen Plugins direkt nutzen zu können. Da es einige Zeit und Nerven gekostet hat, eine vernünftige Lösung hierfür zu finden, ist hier ein Skript zu finden, welches die vorausgesetzten Pakete installiert, alles herunterlädt und kompiliert.
#!/bin/bash # Work directory ### Warning: This script installs the resulting vdr to /work/vdr, yes, this is on the root level! MYCURRENTDIR="${PWD}" cd /work/vdr ##### ## Install prerequisites ##### sudo apt-get install build-essentials dialog libcap-dev libjpeg62-dev libfreetype6{,-dev} fontconfig{,-config} libfontconfig1{,-dev} libcurl4-gnutls-dev libcxxtools-dev libtntnet-dev ##### ## Changes these if newer versions are available (and these work) ##### CURRVDRVER="2.2.0" CURRIPTVVER="2.2.1" CURRDIR="$(pwd)" ##### ## Download everything which we don't already have ##### if [ ! -e vdr-${CURRVDRVER}.tar.bz2 ]; then wget -O vdr-${CURRVDRVER}.tar.bz2 ftp://ftp.tvdr.de/vdr/vdr-${CURRVDRVER}.tar.bz2 fi if [ ! -d vdr-${CURRVDRVER} ]; then tar xvfj vdr-${CURRVDRVER}.tar.bz2 ln -s /work/vdr/vdr-${CURRVDRVER} /work/vdr/vdr fi if [ ! -e vdr-iptv-${CURRIPTVVER}.tgz ]; then wget -O vdr-iptv-${CURRIPTVVER}.tgz http://www.saunalahti.fi/~rahrenbe/vdr/iptv/files/vdr-iptv-${CURRIPTVVER}.tgz fi if [ ! -d vdr-${CURRVDRVER}/PLUGINS/src/iptv ]; then mkdir -p vdr-${CURRVDRVER}/PLUGINS/src/iptv tar xvfz vdr-iptv-${CURRIPTVVER}.tgz -C vdr-${CURRVDRVER}/PLUGINS/src/iptv --strip-components=1 fi ##### ## Further Plugins ##### ### VNSI # https://github.com/FernetMenta/vdr-plugin-vnsiserver if [ ! -d vdr-${CURRVDRVER}/PLUGINS/src/vdr-plugin-vnsiserver ]; then cd vdr-${CURRVDRVER}/PLUGINS/src git clone https://github.com/FernetMenta/vdr-plugin-vnsiserver ln -s vdr-plugin-vnsiserver vnsiserver cd /work/vdr fi ### epgsearch (needed for VDR Live) # http://winni.vdr-developer.org/epgsearch/downloads/vdr-epgsearch-1.0.0.tgz if [ ! -e vdr-plugin-epgsearch-2.2.0.tgz ]; then wget -O vdr-plugin-epgsearch-2.2.0.tgz https://projects.vdr-developer.org/git/vdr-plugin-epgsearch.git/snapshot/vdr-plugin-epgsearch-2.2.0.tar.gz fi if [ ! -d vdr-${CURRVDRVER}/PLUGINS/src/epgsearch ]; then mkdir -p vdr-${CURRVDRVER}/PLUGINS/src/epgsearch tar xvfz vdr-plugin-epgsearch-2.2.0.tgz -C vdr-${CURRVDRVER}/PLUGINS/src/epgsearch --strip-components=1 fi ### VDR Live # http://live.vdr-developer.org/downloads/vdr-live-0.3.0.tar.gz if [ ! -e vdr-plugin-live-release_0-3-0.tgz ]; then wget -O vdr-plugin-live-release_0-3-0.tgz https://projects.vdr-developer.org/git/vdr-plugin-live.git/snapshot/vdr-plugin-live-release_0-3-0.tar.gz fi if [ ! -d vdr-${CURRVDRVER}/PLUGINS/src/live ]; then # mkdir -p vdr-${CURRVDRVER}/PLUGINS/src/live # tar xvfz vdr-plugin-live-release_0-3-0.tgz -C vdr-${CURRVDRVER}/PLUGINS/src/live --strip-components=1 cd /work/vdr/vdr-${CURRVDRVER}/PLUGINS/src git clone https://projects.vdr-developer.org/git/vdr-plugin-live.git/ mv /work/vdr/vdr-${CURRVDRVER}/PLUGINS/src/vdr-plugin-live /work/vdr/vdr-${CURRVDRVER}/PLUGINS/src/live fi cd /work/vdr #### Autotimer # http://phivdr.dyndns.org/vdr/vdr-autotimer/vdr-autotimer-2.3.0.tgz if [ ! -e vdr-autotimer-2.3.0.tgz ]; then wget -O vdr-autotimer-2.3.0.tgz http://phivdr.dyndns.org/vdr/vdr-autotimer/vdr-autotimer-2.3.0.tgz fi if [ ! -d vdr-${CURRVDRVER}/PLUGINS/src/vdr-autotimer ]; then mkdir -p vdr-${CURRVDRVER}/PLUGINS/src/autotimer tar xvfz vdr-autotimer-2.3.0.tgz -C vdr-${CURRVDRVER}/PLUGINS/src/autotimer --strip-components=1 fi ##### ## Compile ##### cd /work/vdr/vdr-${CURRVDRVER} # Das CXXFLAGS="-std=gnu++03" wird benoetigt, da das iptv-Plugin mit den neuen Makros nicht klar kommt (-std=gnu11) CXXFLAGS="-std=gnu++03" make -j $(grep -c ^processor /proc/cpuinfo) cd .. # channels.conf (loading these from a forum where someone listed all channels...) if [ ! -e channels.conf ]; then preString = "pre" # Workaround for wordpress-blogpost, it would end the code otherwise wget -O - -q http://www.vdr-portal.de/board16-video-disk-recorder/board5-vdr-konfiguration/119211-iptv-t-home-entertain-channels-conf-aktuelle-eintr%C3%A4ge/ | grep "\(IPTV:\|</${prestring}>\)" | sed '1,1d; /<\/pre>/,$d' >channels.conf fi cd /work/vdr/vdr-${CURRVDRVER} rm channels.conf ln -s ../channels.conf channels.conf mkdir -p video mkdir -p resources mkdir -p cache # Webinterface sudo ln -s /work/vdr/vdr/PLUGINS/src/live/live/css /work/vdr/vdr-2.2.0/resources/plugins/live/ sudo ln -s /work/vdr/vdr/PLUGINS/src/live/live/img /work/vdr/vdr-2.2.0/resources/plugins/live/ sudo ln -s /work/vdr/vdr/PLUGINS/src/live/live/js /work/vdr/vdr-2.2.0/resources/plugins/live/ sudo ln -s /work/vdr/vdr/PLUGINS/src/live/live/themes /work/vdr/vdr-2.2.0/resources/plugins/live/ # setup.conf initial ## sudo rm /work/vdr/vdr-${CURRVDRVER}/setup.conf # iptv configuration # 15.07.2014: Sollte der VDR die IPTV Kanäle mit der CAID "4AE2" versehen, im iptv-Plugin "Deaktiviere Filter: 1 (PAT 0x00)" definieren und Einträge bereinigen sudo bash -c "cat <<EOF >>setup.conf iptv.DisabledFilters = 1 EOF " # vnsiserver configuration sudo mkdir -p /media/tv sudo bash -c "cat <<EOF >>setup.conf vnsiserver.Timeshift = 2 vnsiserver.TimeshiftBufferDir = /media/tv vnsiserver.TimeshiftBufferFileSize = 20 vnsiserver.TimeshiftBufferSize = 30 EOF " # vnsiserver access rights # sudo cat >/work/vdr/vdr-${CURRVDRVER}/plugins/vnsiserver/allowed_hosts.conf <<EOF sudo bash -c "cat <<EOF >/work/vdr/vdr/plugins/vnsiserver/allowed_hosts.conf # # allowed_hosts.conf This file describes a number of host addresses that # are allowed to connect to the streamdev server running # with the Video Disk Recorder (VDR) on this system. # Syntax: # # IP-Address[/Netmask] # 127.0.0.1 # always accept localhost 192.168.6.0/24 # any host on the local net #204.152.189.113 # a specific host #0.0.0.0/0 # any host on any net (USE THIS WITH CARE!) EOF " # Plugins cd PLUGINS/lib rm * find ../ -iname '*.so' -exec ln -s {} . \; for file in *.so; do mv ${file} $(echo ${file} | sed "s/\.so/.so.${CURRVDRVER}/") ; done cd ../.. echo "Starting VDR" cd .. echo "Going back to ${MYCURRENTDIR}" cd "${MYCURRENTDIR}" ./run.sh
And for run.sh
, I used this:
#!/bin/bash cd /work/vdr/vdr && sudo /work/vdr/vdr/vdr --log=3 -v /data/Videos/TV -c . -L /work/vdr/vdr/PLUGINS/lib --plugin=iptv --localedir=/work/vdr/vdr/locale --resdir=/work/vdr/vdr/resources --cachedir=/work/vdr/vdr/cache -P'vnsiserver -t 5' -P'epgsearch' -P'live'