Wie gesehen, ist der Aufruf von MPlayer einerseits recht kurz, schließlich genügt es im Idealfall einfach, nur den Stream zu übergeben, andererseits kann der Aufruf recht umfangreich werden, wenn man weitere Optionen einstellen möchte.
Arbeitserleichterung beim Fernsehen
Um nicht jedes Mal immer alles Einzugeben, habe ich mir ein Shellscript gebastelt, das Folgendes macht:
- alle Instanzen von MPlayer und gMPlayer beenden, damit es beim Starten des Streams keine Fehlermelung gibt, falls schon eine andere MPlayer-Instanz auf die Hardware zugreift
- Dem Script werden zwei Parameter übergeben, einmal der Sendername und einmal das Verzeichnis, in dem Screenshots abgelegt werden sollen
- Es wird abgefragt, welcher Deinterlacing-Filter verwendet werden soll
- MPlayer wird mit den gemachten Angaben, sowie im Script definierten, immer gleichen Angaben gestartet
Es wird "Zenity" benötigt, welches allerdings bei jeder Gnome-Installation dabei sein sollte. Für KDE und Andere muss das Script eventuell umgeschrieben werden. Der Aufruf funktioniert beispielsweise so:
./fernsehen ZDF "/home/user/Bilder/Screenshots"
Nun wird MPlayer mit den oben im letzten Beispiel angegebenen Optionen gestartet, wobei der Deinterlacing-Filter entsprechend der Angabe im Abfragedialog gesetzt wird. Im Abschnitt ...
# Set Values nicevalue="19" # lower number, more CPU power, 19 is okay, and max cachevalue="30720" #kBytes, 30720 kilobytes = 30 megabytes cacheminvalue="4"; # in percent, 99 is max
... können für jeden Aufruf gleiche Optionen entsprechend angepasst werden.
Das Script kann man sich natürlich Ideal in einen Starter packen, und so mit einem einfachen Doppelklick MPlayer mit dem gewünschten DVB-T-Stream starten.
[Desktop Entry] Version=1.0 Encoding=UTF-8 Type=Application Icon=/home/user/Bilder/Logos/zdf.png Terminal=false Exec=/bin/bash /home/user/fernsehen "ZDF" "/home/user/Bilder/Screenshots" Name=ZDF
... als "ZDF.desktop" speichern, und fertig. Dies kann man natürlich auch mit allen weiteren Sendern machen. Zugegeben, das ist ein mal etwas Handarbeit, aber danach hat man eine wunderbare auswahlmethode. Wenn "Name=" leergelassen wird, wird nichts angezeigt. Auch praktisch, da die Logos ja meist für sich selbst sprechen.
Senderauswahl über Starter
Zugegeben, zappen ist damit etwas schwieriger (MPLayer-Shortcuts sind unter anderem K und L) und langsamer (der Cache wird jedes mal, wenn man "umschaltet" bis zum im Aufruf angegebenen Wert aufgefüllt), aber es funktioniert einwandfrei und extrem konfigurierbar.
Download des Scripts: fernsehen
Alternativ kann man auch dieses dmenu-Script benutzen. dmenu integriert sich aufgrund des Aufrufs perfekt in jeden wmii-Desktop.
#!/bin/bash set -- $(echo $WMII_NORMCOLORS $WMII_FOCUSCOLORS) PIDFILE="${HOME}/.mplayer/dvbtmplayerpid" CAPSDIR="${HOME}/TV-Caps/neue" PARAMS="-b -fn '$WMII_FONT' -nf "$1" -nb "$2" -sf "$4" -sb "$5"" STATION=$(sed s/":.*"/""/g ${HOME}/.mplayer/channels.conf | dmenu ${PARAMS}) if [ "$STATION" ]; then kill $(cat ${PIDFILE}) notify-send "Starte mplayer mit ${STATION}, bitte Geduld!" sleep 3 cd "${CAPSDIR}" MPOPTS="-vf kerndeint=1:0:0:0:0,screenshot -cache 1024 -cache-min 50" mplayer ${MPOPTS} "dvb://${STATION}" & echo $! > ${PIDFILE} fi
Jemandem, der dmenu verwendet, traue ich zu, dass derjenige sich das Script selbst an die eigenen Bedürfnisse anpassen kann :)



Danke für die Ausführungen, die mir gut geholfen haben. Ich wäre auch weiterhin an Informationen zu diesem Thema interessiert. Z.B. habe ich mit mplayer Aufnahmeprobleme. Wenn ich den Stream als MPEG speichere, enthält die Datei am Ende Fehler, die sich beim späteren anschauen als kurze Sprünge bemerkbar machen. Demuxt man die mpeg-Datei mit ProjectX werden die Fehler auch angezeigt. Codiere ich während der Aufnahme gleich in x264, was ja erheblich CPU lastiger ist, kann ich diese Fehler nicht feststellen. Hier mal infohalber meine Codieroptionen, für eine “Livecodierung” während der Aufnahme.
mencoder dvb://ARD -oac copy -ovc x264 -x264encopts threads=auto:bitrate=896:subq=3:me=hex:frameref=3:bframes=3 -vf scale=464:352 -o test.avi -frames $((25*60*95))
Das kann mein 3GHz P4 gerade noch “verschaffen”. Am Ende habe ich eine noch gut anschaubare Datei, die ich auch mal einem Freund uploaden kann.
Grüße!
Also, bei „-oac copy -ovc copy“ habe ich keine Probleme mit fehlerhaften Dateien.
Da ich sowieso nachträglich noch alles schneide, und dann erst Kodiere (wenn die Datei nach dem gucken nicht sowieso in /dev/null verschwindet – Ich benutze es hauptsächlich, um tägliche Sendungen „gesammelt“ am Wochenende am Stück durchgucken zu können), ist mir das auch weniger wichtig.
Die „Sprünge“ könnten vielleicht von Streamfehlern kommen, die durch nicht immer ganz optimalen Empfang entstehen.
Ich bekomme bei deiner Zeile übrigens
„-x264encopts is not an MEncoder option“
Ja, dann war beim Kompilieren vom Mplayer x264 nicht installiert; kannst Du hier bekommen: ftp://ftp.videolan.org/pub/vid...snapshots/
x264 ist eine h264 Implementierung die frei verfügbar ist, allerdings aus Lizensgründen nur als Quellcode.
[...] Einstellungsmöglichkeiten von DVB-T mit MPlayer gibt es im icewind’s Blog von Dirk [...]
mencoder hat einen Parameter um die Laenge der Aufnahme von vornherein festzulegen.
Die Option
-endpos 5400
nimmt z.B. 90 Minuten Film auf.
Die Laenge der Aufnahme wurde hier in Sekunden angegeben. Geht aber auch anders. Wird ueblicherweise benutzt um bei einer zu kodierenden Datei den Endpunkt festzulegen, wenn man nicht die ganze Datei kodieren moechte.
Ich nehme an, aus diesem Grund findet das keiner.
— Auszug man mencoder —
-endpos
(siehe auch -ss und -sb)
Beende das Encodieren nach der angegeben Zeit oder Byteposition.
ANMERKUNG: Die Byteposition ist nicht exakt, da MEncoder nur an Bildgrenzen mit dem Encodieren aufhören kann.
BEISPIEL:
-endpos 56
Encodiere nur 56 Sekunden.
-endpos 01:10:00
Encodiere nur 1 Stunde 10 Minuten.
-endpos 100mb
Encodiere nur 100 MBytes.
Klasse, da muss man aber auch erstmal drauf kommen! *notier* Gut zu wissen, Danke :)
Moin Zusammen,
super Anleitung. Wie werden am Besten zeitgesteuerte Aufnahmen realisiert? Etwa über cronjob?
Gruß,
mmc0815
Ich mache es über cron. Bzw mycron, einen „optimierten cron-wrapper“, wenn man so will.