ZDFmediathek
Aus Gentoo Linux Wiki
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
|
