ZDFmediathek

Aus Gentoo Linux Wiki

Wechseln zu: Navigation, Suche

Um die ZDFmediathek problemfrei benutzen zu können, sind einige Dinge zu beachten. VLC muß mit dem nsplugin-Useflag übersetzt sein:

euse --enable nsplugin 

(euse kommt aus app-portage/gentoolkit)

emerge vlc

Firefox neustarten nicht vergessen.

Wenn es beim Abspielen zu Rucklern kommt und ein normales Anschauen unerträglich wird, liegt das daran, das entweder die Mainzelmännchen in den Streamingservern nicht richtig ticken oder ein Router auf dem Weg dorthin spinnt. Das Problem entsteht durch blockierte icmp-fragmentation-needed-Pakete. Zu Stoßzeiten sind die Mainzelmännchen aber anscheinend manchmal einfach überfordert. Für das icmp-Problem gibt es aber Abhilfe: tcpmss. Zitat dazu aus iptables:

       This  target  is  used to overcome criminally braindead ISPs or servers
       which block ICMP Fragmentation Needed packets.  The  symptoms  of  this
       problem are that everything works fine from your Linux firewall/router,
       but machines behind it can never exchange large packets:
        1) Web browsers connect, then hang with no data received.
        2) Small mail works fine, but large emails hang.
        3) ssh works fine, but scp hangs after initial handshaking.  

Daher im Router oder auf dem Rechner tcpmss-clamping anschalten. Alternativ kann man auch den mtu-Wert herabsetzen, das hat aber negative Auswirkungen auf die maximale Downloadrate.

Wenn man eine reine iptables-Firewall hat:

iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Wenn man firehol benutzt, oben einfach einfügen:

tcpmss auto

Im Notfall den mtu-Wert herabsetzen: Herantasten z.B. mit:

ping -s 1492 -c 10 -M do 217.243.250.25 #bzw. die IP-Adresse des entsprechenden tv1-streamingservers

und eintragen:

Datei: /etc/conf.d/net
mtu_eth0="1360"
/etc/init.d/net.eth0 restart

So in der Form kann man leider nur Beiträge anschauen aber nicht herunterladen oder speichern. Auch dafür gibts Abhilfe:

wget http://svn.xnull.de/svn/misc/mtscrape/mtscrape.rb -O /usr/local/bin/mtscrape 

Abhängigkeiten:

media-video/mplayer dev-lang/ruby dev-ruby/rubygems dev-ruby/libxml media-video/ffmpeg2theora dev-ruby/ruby-json

Das ruby-json-ebuild ist nicht in portage, gibts aber hier: http://bugs.gentoo.org/show_bug.cgi?id=198515

Oder einfach das ebuild aus dem overlay nehmen:

layman -a hollow
emerge media-video/mtscrape

Wenn mtscrape zu umständlich ist, kann man mit diesem Bashscript auch einfach Anhand des Titels Beiträge speichern und bei Bedarf in xvid/ogg umwandeln. Abhängigkeiten:

media-video/mkvtoolnix media-sound/normalize media-sound/vorbis-tools sys-process/lsof
Datei: /usr/local/bin/mtdownload
 
#!/bin/bash
if [ ! "$1" ]||[ "$1" == "-h" ]||[ "$1" == "--help" ];then echo "`basename $0` Suchstring";exit;fi
TITEL=$(python -c "import urllib;print urllib.quote(\"$*\")")
ZUFALL=$RANDOM
PID=$$
for ID in `wget -O - "http://www.zdf.de/ZDFmediathek/search?searchStr=$TITEL&hideNavigationTeaser=false&orderBy=searchsendedatum&sortDirection=descending&startDate=TT.MM.JJJJ&endDate=TT.MM.JJJJ&_docTypeVideo=&docTypeVideo=true&_docTypeBilderserie=&docTypeBilderserie=false&_docTypeInteraktiv=&docTypeInteraktiv=false&channel=&view=navJson" 2>/dev/null|head -n 3|grep -P --only-matching '\[[\d\s,]+\]'|sed 's/\[//;s/\]//;s/,//g'`;do
    #Den Dateinamen rauskriegen, in den mtscrape das Video spreichert, geht bestimmt auch geschickter
    (sleep 10;echo $(lsof -u $USER 2>/dev/null|grep -P "`ps -u $USER -j -H|grep $PID|tail -n 1|awk '{ print $1}'`.*wmv"|grep -P --only-matching '/.*$') > /tmp/mtdownload-$ZUFALL)&
    mtscrape -v -I $ID
    FILENAME=$(cat /tmp/mtdownload-$ZUFALL)
    rm /tmp/mtdownload-$ZUFALL
    echo "Abbrechen [Enter] oder umwandeln?"
    (for i in `seq 1 15`;do printf '\a';sleep 1;done) &
    read -n 1 -t 15 KEY;if [ "$?" == 0 ];then kill `pgrep -P $$`;continue;fi
    #ffmpeg2theora --nice 19 --videoquality 3 --speedlevel 2 --audioquality -1 $FILENAME
    #transcode -i "$FILENAME" -x mplayer,mplayer -y xvid4,ogg -o film.mkv
    #ffmpeg -an -vcodec libxvid -b 800k -r 25 -i "$FILENAME" "$*.avi"
    nice -n 19 mencoder -nosound -ovc lavc -lavcopts vcodec=libxvid:autoaspect:vbitrate=600:vpass=1:threads=2 -ffourcc XVID -fps 25 -passlogfile /tmp/mtdownload-$ZUFALL.2pass -o /dev/null "$FILENAME"
    nice -n 19 mencoder -nosound -ovc lavc -lavcopts vcodec=libxvid:autoaspect:vbitrate=600:vpass=2:threads=2 -ffourcc XVID -fps 25 -passlogfile /tmp/mtdownload-$ZUFALL.2pass -o "$*.avi" "$FILENAME"
    rm /tmp/mtdownload-$ZUFALL.2pass
    PCMSTREAM="/tmp/mtdownload-$ZUFALL.wav"
    mplayer -really-quiet -ao pcm:waveheader:file="$PCMSTREAM" -vc dummy -vo null "$FILENAME"
    nice -n 19 normalize -q "$PCMSTREAM"
    LC_ALL="de_DE.utf8" nice -n 19 oggenc -o "$*.ogg" -q -1 "$PCMSTREAM"
    if [ -e "$*.mkv" ];then FINALFILE="$* $RANDOM";else FINALFILE="$*";fi
    mkvmerge -o "$FINALFILE.mkv" "$*.avi" "$*.ogg"
    rm "$*.avi" "$*.ogg" "$FILENAME" "$PCMSTREAM"
done
  
'Persönliche Werkzeuge