Wie schon für das Fernsehen habe ich mir auch für das Aufnehmen ein Script geschrieben, um nicht bei jedem Aufruf alle Optionen angeben zu müssen. Zuerst einmal schießt das Script alle Instanzen von MPLayer und gMPlayer ab, um alleinigen Zugriff (sofern nicht irgendein anderes Tool auchnoch auf die Hardware zugreift, was hier nicht berücksichtigt ist *g*) auf die Hardware zu haben.
Das Aufnehmen vereinfachen
Das Script selbst benötigt vier Parameter, den Sender, die Bezeichnung der Aufnahme, die gewünschte Aufnahmedauer in Minuten und ein Verzeichnis, indem die Aufnahme an- und wenn sie Fertig ist, auch abgelegt werden soll.
./aufnehmen ZDF "Eine Testaufnahme" 5 "/home/user/Aufnahmen"
Erzeugt eine fünfminütige Aufnahme mit dem Dateinamen "Eine Testaufnahme.mpg", und zwar im Verzeichnis "Aufnahmen" im Home-Verzeichnis des Benutzers "User". Dabei macht das Script folgendes:
- Alle instanzen von MPlayer und gMPLayer beenden
- Ins Zielverzeichnis wechseln, und es vorher bei Bedarf anlegen
- den Aufruf aus dem letzten Beispiel starten, wobei Sender, und Verzeichnis angepasst werden
Dabei wird absolut nichts ausgegeben, alle Ausgaben werden in eine Datei umgeleitet, die sich an der Selben stelle befindet, wie die Zieldatei. Daher eignet sich das Script ideal, um es als Cronjob laufen zu lassen Während der Aufnahme hat die Zieldatei die Endung ".AUFNAHME". Nach der Aufnahme wird die Datei entsprechend umbenannt.
Download des Scripts: aufnehmen
Infos
Sollten Fragen oder Probleme zu den beiden Scripts auftreten, so bin ich gerne bereit, zu helfen, wo und wie ich kann. Es sei aber gesagt, dass die Script auf eigene Gefahr verwendet werden, und ich keine Garantie auf die Funktionsfähigkeit gebe, schließlich ist jedes System anders - und die Scripte stammen 1:1 von meinem System, ohne rücksicht darauf, dass es auch andere Systeme gibt. Sollte aber alles funktionieren.


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.